加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# 工具类--类型转换的泛型方法

发布时间:2020-12-15 17:52:03 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace LinqPractice { class Util

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    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;  
            }  
        }  
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读