zoukankan      html  css  js  c++  java
  • 1、ASP.NET MVC入门到精通——新语法

    C#特性 扩展方法

    主要用于泛型集合和泛型类

    扩展方法的本质:编译时,直接将 str.WriteSelf(2015) 替换成 StringUtil.WriteSelf(str,2015);
    想为一个类型添加一些成员 , 怎么办?
    扩展方法:

     class Program
        {
            static void Main(string[] args)
            {
                string str = "2015-01-01";
                //调用静态方法
                DateTime resualt = str.ToTry(DateTime.Now);
                Console.Write(resualt);
                Console.Write(resualt.GetType());
                Console.ReadKey();
            }
        }
        /// <summary>
        /// 扩展方法静态类
        /// </summary>
        public static class ConvertToType
        {
            /// <summary>
            /// 扩展方法 关键字 this
            /// </summary>
            /// <param name="value">被转的类型</param>
            /// <returns>默认返回0</returns>
            public static int ToTry(this string value)
            {
                int temp = 0;
                if (!string.IsNullOrEmpty(value))
                {
                    try
                    {
                        int.TryParse(value, out temp);
                    }
                    catch
                    {
                        temp = 0;
                    }
                }
                return temp;
            }
    
    
            /// <summary>
            ///数据类型转换
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="value"></param>
            /// <param name="defaultValue"></param>
            /// <returns></returns>
            public static T ToTry<T>(this object value, T defaultValue)
            {
                //1 确定T 的类型 2 Object 的类型
                //在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:
                //default 关键字 若T为引用类型则返回null,值类型返回0,null 返回 System.Nullable(Of T)
                object startValue = default(T);
    
                if (value != null)
                {
                    //typeof和getType()区别
                    //typeof 用于类型
                    //gettype 用于 类型实例化后
                    // Test t=new Test() t.gettype() 和 typeof(T)
                    try
                    {
                        Type convertType = typeof(T);
                        if (convertType == typeof(String))
                        {
                            startValue = value.ToString();
                        }
                        if (convertType == typeof(Int32))
                        {
                            startValue = Convert.ToInt32(value);
                        }
                        if (convertType == typeof(DateTime))
                        {
                            startValue = Convert.ToDateTime(value);
                        }
                        return (T)startValue;
                    }
                    catch
                    {
                        return defaultValue;
                    }
                }
                else
                {
                    return defaultValue;
                }
            }
        }
  • 相关阅读:
    转载的log4cplus使用指南
    linux下安装log4cplus
    MongoDB常用命令
    ios UIButton改背景
    ios发送邮件
    oracle数据库 in 结果字段的拆分
    Server returned HTTP response code: 505
    ORA-01795:列表中的最大表达式数为1000
    ajax post请求
    oracle 同义词
  • 原文地址:https://www.cnblogs.com/q101301/p/4872474.html
Copyright © 2011-2022 走看看