• 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()//打印名字
  • 相关阅读:
    rkhunter和chkrootkit
    Chkrootkit安装配置教程 – Linux后门入侵检测
    安装asterisk以及asterisk-gui
    职场最让人鄙视哪种招聘面试老板
    谷歌为何大举收购机器人公司?
    evercookie
    美科学家发现量子纠缠幽灵与宇宙虫洞有关
    Storm-YARN
    Twitter开源Summingbird:近原生编码下整合批处理与流处理
    基于keepalived的redis通信链接数测试
  • 原文地址:https://www.cnblogs.com/FallenDown/p/8463736.html
Copyright © 2020-2023  润新知