C# 工具類--類型轉換的泛型方法

來源:互聯網
上載者:User
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# 工具類--類型轉換的泛型方法的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.