zoukankan      html  css  js  c++  java
  • c# 扩展方法初见理解

        个人理解扩展方法是对某些类在不改变源码的基础上添加其他的方法。扩展方法必须是在非泛型的静态类里定义,且第一个参数是要使用this 指定需要扩展的类型。

    class Program
        {
            static void Main(string[] args)
            {
                ExtensionDemo test = new ExtensionCreate().TestRun("Jennifer") //声明扩展方法                
                Console.WriteLine(test.FirstName + " " + test.LastName);   
                Console.ReadKey();
            }      
        }
    public class ExtensionCreate
    { 
    public ExtensionDemo TestRun(string FirstName)
    {
    return new ExtensionDemo() { FirstName = FirstName };//声明并返回一个带有FirstName属性的对象
    } 
    }
    public class ExtensionDemo //只有两个属性的类型
        {
            public string LastName { get; set; }
            public string FirstName { get; set; }
            
        }

    现在我们可以创建一个扩展方法,并且打印出来。或者创建另一个扩展方法为属性赋值

    public static class ExtensionType
        {
            public static void ExtensionWrite(this ExtensionDemo demo)
            {
                Console.WriteLine(demo.FirstName + " " + demo.LastName);//输出全名名字
            }
    
            public static void AssignmentLastName(this ExtensionDemo demo, string LastName)
            {
                demo.LastName = LastName;//对LastName属性进行赋值
                
            }
        }
    
    test.ExtensionWrite();
    test.AssignmentLastName("Aniston");
    test.ExtensionWrite();

    扩展方法可以使用类里的公共属性,私有属性不可调用。

    public static class ExtensionType
        {
            public static void ExtensionWrite(this ExtensionDemo demo)
            {
                Console.WriteLine(demo.FirstName + " " + demo.LastName);//输出名字
            }
    
            public static ExtensionDemo ExtensionTest(this ExtensionDemo demo, string LastName)
            {
                demo.LastName = LastName;//对LastName属性进行赋值
                return demo;
            }
        }
    
    public class ExtensionCreate
        {   
            //接受一个string类型参数,返回一个ExtensionDemo类型     
            public ExtensionDemo TestRun(string FirstName)
            {
                return new ExtensionDemo() { FirstName = FirstName };
            }       
        }
    
     ExtensionDemo test = new ExtensionCreate().TestRun("Jennifer")
                    .ExtensionTest("Aniston"); // 这是扩展方法
    
     test.ExtensionWrite()//打印名字
  • 相关阅读:
    java java.lang.NoClassDefFoundError 的解决办法
    jdbc.properties 包含多种数据库驱动链接的版本
    regex正则表达式
    针对谷歌默认最小字体12px的正确解决方案 (css、html)
    有关svn的报错
    芝麻圆表
    微信 公众号开发文档接口都是后台去请求。
    一级和二级的列表在一起的时候。获取一级放在轮播里面展示。10个一组轮播
    移动端的搜索用的是from提交
    h5中不能用js来直接获取网络码和机器码的。
  • 原文地址:https://www.cnblogs.com/FallenDown/p/8463736.html
Copyright © 2011-2022 走看看