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()//打印名字
  • 相关阅读:
    WordPress 常用的动作钩子
    wordpress的过滤器
    实战haslayout(实战篇)!
    wordpress函数描述之一——WordPress add_theme_support() 函数
    一些闲言碎语,好记星不如烂笔头(一)
    实战haslayout(理论篇)!
    WordPress的钩子函数之一——do_action()
    IE6变态bug总结非常好!没有错误
    Javascript参考博客
    SilverLight遍历父子控件的通用方法
  • 原文地址:https://www.cnblogs.com/FallenDown/p/8463736.html
Copyright © 2011-2022 走看看