數據類型轉換是最常用的功能之一,在這裡公布幾個核心且非常實用的方法 .
一: public static T To<T>(object value);
看到這個方法的原型,我想就不用多說了,就是把傳入的值轉換成T指定的類型並輸出。
public static T To<T>(object value)
...{
try
...{
//對於不能順利轉換的,采用Parse方法進行構造
switch (typeof(T).Name.ToLower())
...{
case "timespan": return (T)(object)TimeSpan.Parse(value.ToString());
}
switch (typeof(T).BaseType.Name.ToLower())
...{
case "enum": return (T)Enum.Parse(typeof(T), value.ToString());
}
&nb; return (T)System.Convert.ChangeType(value, typeof(T));
}
catch ...{ return default(T); }
}
要說明的是對於一些類型,如枚舉、TimeSpan類型的數據需要用Parse方法來轉換。這個方法的優點:可以對有繼承關系的類也可以轉換。
另外封裝一個不重要的東西以求類型轉換相關方法的完整:
/**//// <summary>
/// 將指定值轉換為指定類型
/// </summary>
/// <param name="value">要轉換的值</param>
/// <param name="type">目標類型</param>
/// <returns></returns>
public static object To(object value, Type type)
...{
return Convert.ChangeType(value, type);
}
二:字符串拆分與合並
看幾個方法原形即可,一看就知道該作什麼用。
public static string Join(object[] values, string separator);
public static T[] Split<T>(string input, string separator, StringSplitOptions option);
public static void Connect(ref string original, string addition, string connectWith);第一個方法將傳入的數組用指定的分隔符連接起來。它內部調用object.ToString()方法。這個方法也很常用,如int[]等類型的數據合並為用逗號隔開的字符串。
第二個方法是第一個方法的逆操作。使用了To<T>(...)方法。
第三個需要詳細說明一下:
public static void Connect(ref string original, string addition, string connectWith)
{
if (string.IsNullOrEmpty(original))
...{
original = addition;
return;
}
original += connectWith + addition;
}...有多個項要添加到串中的時候,這個方法是一個選擇,比如:多個查詢條件要通過 AND 操作合並起來,特別是用戶自定義查詢的時候,又如自定義多個排序列等。說明:對於查詢條件的構造,這個不嚴謹,在我的DBHelper類中會有專門的構造方式。
其它:主要是編碼轉換的方法。如進行BASE64編碼等。不再贅述。