数据类型转换是最常用的功能之一,在这里公布几个核心且非常实用的方法 .
一: 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());
}
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);
}
二:字符串拆分与合并
看几个方法原形即可,一看就知道该作什么用。
第一个方法将传入的数组用指定的分隔符连接起来。它内部调用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编码等。不再赘述。
一: public static T To<T>(object value);
看到这个方法的原型,我想就不用多说了,就是把传入的值转换成T指定的类型并输出。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
要说明的是对于一些类型,如枚举、TimeSpan类型的数据需要用Parse方法来转换。这个方法的优点:可以对有继承关系的类也可以转换。
另外封装一个不重要的东西以求类型转换相关方法的完整:
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
二:字符串拆分与合并
看几个方法原形即可,一看就知道该作什么用。
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);
public static T[] Split<T>(string input, string separator, StringSplitOptions option);
public static void Connect(ref string original, string addition, string connectWith);
第二个方法是第一个方法的逆操作。使用了To<T>(...)方法。
第三个需要详细说明一下:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
其它:主要是编码转换的方法。如进行BASE64编码等。不再赘述。