zoukankan      html  css  js  c++  java
  • 扩展方法用法整理

    扩展方法貌似平时很少用,平时基本都是用静态方法,其实静态方法也挺方便的。

    class Program
        {
            static void Main(string[] args)
            {
                var p = new Person() { BirthTime = DateTime.Parse("1990-07-19") };
                var age = p.GetAge();//扩展方法调用起来更顺眼
                age = ExtensionClass.GetAge2(p);//静态方法调用
                Console.ReadKey();
            }
        }
    
        public static class ExtensionClass//注意扩展方法的类不能放到Program类里面,这样扩展方法就会报错
        {
            public static int GetAge2(Person person)//静态方法
            {
                if (person.DeathTime.HasValue)
                    return (person.DeathTime.Value - person.BirthTime).Days / 365;
                else
                    return (DateTime.Now - person.BirthTime).Days / 365;
            }
    
            public static int GetAge(this Person person)//扩展方法
            {
                if (person.DeathTime.HasValue)
                    return (person.DeathTime.Value - person.BirthTime).Days / 365;
                else
                    return (DateTime.Now - person.BirthTime).Days / 365;
            }
        }
        
        public class Person
        {
            public DateTime BirthTime { get; set; }
            public DateTime? DeathTime { get; set; }
        }

    上面所有的都只是扩展方法的附加用处,扩展方法真正的威力是为Linq服务的(主要体现于IEnumerable和IQueryable)。下面简单列举个例子:

    例:

            public static IList<T> MyWhere<T>(this IList<T> list, Func<T, bool> func)
            {
                List<T> newList = new List<T>();
                foreach (var item in list)
                {
                    if (func(item))
                        newList.Add(item);
                }
                return newList;
            }

    总结扩展方法的定义规则:静态类里面声明静态方法,方法(扩展方法)第一个参数(被扩展的类型)前面加“this”;

  • 相关阅读:
    安装armadillo
    windows sublime 2 破解
    ubuntu10.04安装有线网卡驱动
    x250装无线网卡驱动ubuntu
    main restricted universe muitiverse
    apt-get error
    新系統必須安裝的軟件列表
    更新ubuntu軟件源爲阿里雲腳本
    轉載:让重定向>,>>具有root权限
    margin的相关属性:
  • 原文地址:https://www.cnblogs.com/chunhui212/p/5902808.html
Copyright © 2011-2022 走看看