c# 工具类--类型转换的泛型方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace LinqPractice
{
class Utility
{
public static T ConvertDataRow<T>(DataRow dr, string columnName,T defaultValue)
{
if (dr.Table.Columns.Contains(columnName))
{
return ConvertType<T>(dr[columnName],defaultValue);
}
return default(T);
}
/// <summary>
/// 泛型数据类型转换
/// </summary>
/// <typeparam name="T">自定义数据类型</typeparam>
/// <param name="value">传入需要转换的值</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static T ConvertType<T>(object value,T defaultValue)
{
try
{
return (T)ConvertToT<T>(value,defaultValue);
}
catch
{
return default(T);
}
}
/// <summary>
/// 转换数据类型
/// </summary>
/// <typeparam name="T">自定义数据类型</typeparam>
/// <param name="myvalue">传入需要转换的值</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
private static object ConvertToT<T>(object myvalue,T defaultValue)
{
TypeCode typeCode = System.Type.GetTypeCode(typeof(T));
if (myvalue != null)
{
string value = Convert.ToString(myvalue);
switch (typeCode)
{
case TypeCode.Boolean:
bool flag = false;
if (bool.TryParse(value, out flag))
{
return flag;
}
break;
case TypeCode.Char:
char c;
if (Char.TryParse(value, out c))
{
return c;
}
break;
case TypeCode.SByte:
sbyte s = 0;
if (SByte.TryParse(value, out s))
{
return s;
}
break;
case TypeCode.Byte:
byte b = 0;
if (Byte.TryParse(value, out b))
{
return b;
}
break;
case TypeCode.Int16:
Int16 i16 = 0;
if (Int16.TryParse(value, out i16))
{
return i16;
}
break;
case TypeCode.UInt16:
UInt16 ui16 = 0;
if (UInt16.TryParse(value, out ui16))
return ui16;
break;
case TypeCode.Int32:
int i = 0;
if (Int32.TryParse(value, out i))
{
return i;
}
break;
case TypeCode.UInt32:
UInt32 ui32 = 0;
if (UInt32.TryParse(value, out ui32))
{
return ui32;
}
break;
case TypeCode.Int64:
Int64 i64 = 0;
if (Int64.TryParse(value, out i64))
{
return i64;
}
break;
case TypeCode.UInt64:
UInt64 ui64 = 0;
if (UInt64.TryParse(value, out ui64))
return ui64;
break;
case TypeCode.Single:
Single single = 0;
if (Single.TryParse(value, out single))
{
return single;
}
break;
case TypeCode.Double:
double d = 0;
if (Double.TryParse(value, out d))
{
return d;
}
break;
case TypeCode.Decimal:
decimal de = 0;
if (Decimal.TryParse(value, out de))
{
return de;
}
break;
case TypeCode.DateTime:
DateTime dt;
if (DateTime.TryParse(value, out dt))
{
return dt;
}
break;
case TypeCode.String:
if (!string.IsNullOrEmpty(value))
{
return value.ToString();
}
break;
}
}
return defaultValue;
}
}
} 以上就是c# 工具类--类型转换的泛型方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!
美容护肤品商城网站源码具有适合美容护肤品商城的设计风格,预装了基础模块,企业招聘模块,留言反馈模块,会员功能模块,网友点评模块,新闻文章模块,网上购物模块,积分换赠模块等功能模块。具有商品分类、品牌管理、商品管理、支付方法设置、配送方法设置、会员类型设置、会员账户管理、会员积分管理、订单管理、订单统计、销售统计、商品搜索、商品分类查询、商品品牌查询、商品订购、在线支付、商品评论等B2C电子商务功能
6
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号