• .Net平台下的扩展方法


      扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。

    定义和调用扩展方法

    1. 定义一个静态以包含扩展方法。

      该类必须对客户端代码可见。有关可访问性规则的更多信息,请参见访问修饰符(C# 编程指南)

    2. 将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。

    3. 该方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。

    4. 在调用代码中,添加一条 using 指令以指定包含扩展方法类的命名空间。

    5. 按照与调用类型上的实例方法一样的方式调用扩展方法。

      请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。您只需通过 n 为这两个形参提供实参。

    代码示例如下:

    
    
    //包含扩展方法的类

    namespace
     ExtensionMethodDemo {     //类必须为非泛型静态类     public static class ExtensionMethodClass     {         //定义一个扩展方法,该方法是静态方法         public static string DoubleStr(this string s)         {             return s + s;         }     } }
    
    
    //引用扩展方法的类
    
    using System;
    //如果不在同一个命名空间需要添加引用
    namespace ExtensionMethodDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                string s = "ABC";
                //调用扩展方法
                s = s.DoubleStr();
                Console.WriteLine(s);//输出结果为"ABCABC"
                Console.ReadKey();
            }
        }
    }
    
    
    
    
    
    
  • 相关阅读:
    【bzoj3774】最优选择 网络流最小割
    【bzoj3697】采药人的路径 树的点分治
    【bzoj3576】[Hnoi2014]江南乐 博弈论+SG定理+数学
    【bzoj3451】Tyvj1953 Normal 期望+树的点分治+FFT
    【bzoj2906】颜色 分块
    【bzoj5028】小Z的加油店 扩展裴蜀定理+差分+线段树
    【bzoj2257】[Jsoi2009]瓶子和燃料 扩展裴蜀定理+STL-map
    【bzoj4542】[Hnoi2016]大数 莫队算法
    【bzoj4182】Shopping 树的点分治+dfs序+背包dp
    【bzoj2560】串珠子 状压dp+容斥原理
  • 原文地址:https://www.cnblogs.com/midu/p/3439431.html
Copyright © 2020-2023  润新知