zoukankan      html  css  js  c++  java
  • C#3.0新特性之扩展方法

    不讲什么废话了,来点干的,首先您看下这个类的定义和实现:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ExFunctions
    {
        public static class TestClass
        {
            public static string SayHello(this string userName)
            {
                return string.Format("Hello,{0}", userName);
            }
        }
    }

    这是我在vs2008里面创建的一个类,这个ide可以选择.net framework版本,我选择的是3.5,上面这个类在.net framework 2.0中是一个另类,这种写法是C#3.0中的新特性,称之为“扩展方法",在一个非范型的静态类里面,我们通过声明一个带this参数的静态方法来实现扩展函数,扩展函数能够在参数类型的实例对象中添加方法,比如上面的函数,我就为string类型的对象添加了一个名为SayHello的函数,在使用的过程中,很是方便,使用代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ExFunctions
    {
        class Program
        {
            static void Main(string[] args)
            {
                string userName = "jillzhang";
                string welcomeString = userName.SayHello();
                Console.WriteLine(welcomeString);
                Console.Read();
            }
        }
    }

    再看看这幅图,感觉3.0这个功能还是蛮有意义的,平时我们经常为了扩展一些类的行为,而继承类,出于不同目的,我们会产生一些子类,而这些子类在使用的时候,我们时刻要关注其类型,通过扩展方法,我们可以轻松的更改原类,为原类添砖加瓦,使用的时候,也不必考虑类型转换了,效率会因此提高一些,由此可见,MS的人性化作的真是非常到位了。



    您还可以象使用静态函数一样使用扩展函数,如:

    string welcomeString = TestClass.SayHello(userName);

    所以,在我看来这个特征还是蛮贴心的。

    jillzhang jillzhang@126.com

  • 相关阅读:
    【转载】stm32的GPIO八种工作模式
    常用数字滤波算法总结
    ST-LINK使用注意
    【转载】深入理解嵌入式开发
    【stm32中断优先级--珍藏版】
    对飞控的理解(一)
    【转载】c语言数据的左移右移
    四轴之第一炸
    linux下查看隐藏文件
    Jetson TK1 五:移植工控机程序到板上
  • 原文地址:https://www.cnblogs.com/jillzhang/p/915074.html
Copyright © 2011-2022 走看看