旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

C# 东西类--范例转换的泛型要领【C#.Net教程】,C# ,工具类,类型转换

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:44评论:0


导读:C#东西类--范例转换的泛型要领usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;...
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# 东西类--范例转换的泛型要领的内容,更多相关内容请关注ki4网(www.ki4.cn)!

标签:C#工具类类型转换


欢迎 发表评论: