C#扩展方法

总结:1、扩展方法最好单独放在一个命名空间里面。

          2、扩展方法必须是放在静态类里面,扩展方法的定义必须具有文件作用域,也就是说必须在文件中某个命名空间下直接定义,不能嵌套在另一个类中定义;

         3、扩展方法必须是静态方法,扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。说明静态方法相当被扩展类中普通非静态方法更低一级别的方法,换句话说,如果某个类型具有一个名为 Process(int i) 的方法,而你有一个具有相同签名的扩展方法,则编译器总是绑定到该实例方法。

         4、扩展方法不能访问被扩展类的的私有字段。

        5、扩展方法目的是把经常操作类实例的操作方式并到类中。

       6、若要为特定类型启用扩展方法,只需为在其中定义这些方法的命名空间添加 using 指令

      7、可以使用扩展方法来扩展类或接口,但不能重写扩展方法。例如:IEnumerable<T> 接口的扩展方法Enumerable类。

介绍了下序列化方面的知识。看过Demo的朋友可能注意到了里面就用到过泛型的扩展方法,本篇打算总结下C#扩展方法的用法。博主打算分三个层面来介绍这个知识点,分别是:.Net内置对象的扩展方法、一般对象的扩展方法、泛型对象的扩展方法。

   8、扩展类必须在非泛型静态类中定义,不能是泛型类,而泛型类只有在运行时才可以进行真正确定它具体类型,所以就不能是泛型静态类了

     什么是扩展方法写法:

 

 

namespace NClassOfStudent
{


    static class ClassOfStudentExtension
    {
        public static int count(this ClassOfStudent st)
        {

            return 22;


        }


    }
}

 

说明:需要特别说明的是,扩展方法可以拥有多个参数,但第一个参数的位置始终是属于为扩展对象的,不能改变。也就是说只有第一个参数可以并且必须用this关键字修饰,其他的参数视为方法的普通参数。

最常见的扩展方法是 LINQ 标准查询运算符,它将查询功能添加到现有的 System.Collections.IEnumerable 和 System.Collections.Generic.IEnumerable<T> 类型。

 

posted @ 2021-09-19 15:18  小林野夫  阅读(3864)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/