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高级项目实战02:客户关系管理系统CRM系统模块分析与介绍
    Java高级项目实战之CRM系统01:CRM系统概念和分类、企业项目开发流程
    Java字符串编码
    Java线程有哪些不太为人所知的技巧与用法?
    捕获异常之使用SLF4J和Logback
    捕获异常之使用Log4j
    Idea 热部署插件JRebel 安装与环境配置-上海尚学堂Java培训
    Java变量常量声明和定义
    LeetCode239 滑动窗口最大值
    LeetCode347. 前 K 个高频元素
  • 原文地址:https://www.cnblogs.com/FallenDown/p/8463736.html
Copyright © 2011-2022 走看看