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()//打印名字
  • 相关阅读:
    [学习笔记] SSD代码笔记 + EifficientNet backbone 练习
    [论文理解] CornerNet: Detecting Objects as Paired Keypoints
    [torch] torch.contiguous
    [tensorflow] tf2.0 简单例子
    [大坑]Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
    本机Jenkins的使用
    安全工具acunetix使用
    cv2.matchTemplate()函数的应用,匹配图片后画出矩形
    python将PNG格式的图片转化成为jpg
    Python实现FTP文件的上传和下载
  • 原文地址:https://www.cnblogs.com/FallenDown/p/8463736.html
Copyright © 2011-2022 走看看