zoukankan      html  css  js  c++  java
  • C#--扩展方法

    一、扩展方法的定义及实现

           定义:使用一个静态类的静态方法给已有的类(被扩展类型)添加实例方法

           实现:声明一个静态类,在静态类声明一个静态方法(给被扩展类型的扩展方法),

                     扩展方法必须为如下格式:

                     扩展方法名(this  被扩展类型  形参,...其他参数...)

    二、举个栗子

     1 using System;
     2 
     3 namespace ArrayListToList.Manager
     4 {
     5     //被扩展类型
     6     public class ExtendedClass
     7     {
     8         public string name;
     9     }
    10 
    11     //扩展方法静态类
    12     public static class ExtendMethodClass
    13     {
    14         //扩展方法
    15         public static void ExtendMethod(this ExtendedClass ex, string name, string msg)
    16         {
    17             string result = name + "  " + msg;
    18             Console.WriteLine(result);
    19 
    20         }
    21     }
    22 
    23     public class Program
    24     {
    25         static void Main()
    26         {
    27             ExtendedClass oo = new ExtendedClass();
    28             //实例调用
    29             oo.ExtendMethod("zhangsan", "I like you");
    30 
    31             //作为静态方法调用
    32             //ExtendMethodClass.ExtendMethod(null, "zhangsan", "I like you");
    33         }
    34     }
    35 }

           结果:

    三、注意点

           实例方法调用:必须是对象(实例)才能调用,类型直接调用错误。

           方法签名不重复:扩展方法的签名不能是被扩展类中已存在的,否则扩展方法永远不会得到调用(可以理解为扩展方法被覆盖),但可以作为静态方法调用。

    四、问题

           我不明白为啥需要用扩展方法,知其然不知其所以然,望博友不吝赐教,

           评论或email:lzpzsf231@163.com,谢谢。

  • 相关阅读:
    产品易用性
    优化Compress components with gzip 问题
    转:稳定性测试
    Xray CA证书
    转:获取WEB各阶段响应时间
    测试用例编写注意事项
    用dd把一个空硬盘写满
    转:linux终端命令使用cpu负载到100
    JMeter命令行执行+生成HTML报告
    防F12扒代码:按下F12关闭当前页面
  • 原文地址:https://www.cnblogs.com/mileres/p/7505066.html
Copyright © 2011-2022 走看看