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,谢谢。

  • 相关阅读:
    MySQL查询出错提示 --secure-file-priv解决方法
    导入csv文件到mysql
    Ubuntu16.04配置phpmyadmin
    TensorFlow安装(Ubuntu 16.04)
    github设置只识别指定类型的文件
    python file operations
    Ubuntu16.04 install flash plugin
    PRML读书笔记——3 Linear Models for Regression
    Ubuntu下查看机器信息
    PRML读书笔记——2 Probability Distributions
  • 原文地址:https://www.cnblogs.com/mileres/p/7505066.html
Copyright © 2011-2022 走看看