神州教育培训网 打造高端培训课程,传播精品教育理念! 神州教育 神州培训 教育 企业培训 企业内训 企业管理 研修课程 简章 资本运作 房地产 国学 名师推荐

C#3.0新特性之扩展方法介绍

C#3.0扩展方法是给现有类型添加一个方法。现在类型即可是基本数据类型(如int,String等),也可以是自己定义的类。
以下是引用片段:

//Demo--1 
//扩展基本类型 
namespace TestExtensionMethods
{
    // 必须建一个静态类,用来包含要添加的扩展方法 
    public static class Extensions
    {
        //要添加的扩展方法必须为一个静态方法 
        //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展string类型 
        //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可 
        //综合来讲,此方法就是要给string类型添加一个叫TestMethod的方法,此方法返回一个int型的值,即返回调用此方法对象的长度。 
        public static int TestMethod(this string s)
        {
            return s.Length;
        }
    }
    //测试扩展方法类 
    class Program
    {
        static void Main(string[] args)
        {
            string str = "Hello Extension Methods";
            //调用扩展方法,必须用对象来调用 
            int len = str.TestMethod();
            Console.WriteLine(len);
        }
    }
}

 

//Demo--2 
//扩展自定义类型,同时展示了扩展方法带参数情况,以及方法重载 
namespace TestExtendMethod
{
    public class Student
    {
        public string Description()
        {
            return "Student.............";
        }
        public string Description(string name)
        {
            return "the student’s name is " + name;
        }
    }
    // 必须建一个静态类,用来包含要添加的扩展方法 
    public static class Extensions
    {
        //要添加的扩展方法必须为一个静态方法 
        //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展Student类型 
        //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可 
        //综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,此方法返回一个string型的值 
        public static string TestMethod(this Student s)
        {
            return s.Description();
        }
        //要添加的扩展方法必须为一个静态方法 
        //此方法参数列表第一个参数表示要扩展哪一个类,第二个参数才表示此扩展方法的真正参数 
        //综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,此方法带有一个string类型的参数,并返回一个string型的值 
        public static string TestMethod(this Student s, string name)
        {
            return s.Description(name);
        }
    }
    //测试扩展方法类 
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            //调用扩展方法,必须用对象来调用 
            string mes = stu.TestMethod();
            Console.WriteLine(mes);
            //调用带参数的扩展方法,只要传第二个参数就可以了 
            //因为他的第一个参数其实只是为了表明是扩展哪个数据类型 
            mes = stu.TestMethod("李沉舟");
            Console.WriteLine(mes);
        }
    }
}

 


  总结:
  1.扩展方法是给现有类型添加一个方法
  2.扩展方法是通过 指定关键字 t his 修 饰方法的第一个参数
  3.扩展方法必须声明在静态类中
  4.扩展方法要通用对象来调用
  5.扩展方法可以带参数

posted on 2015-10-28 15:46  努力&快乐  阅读(202)  评论(0编辑  收藏  举报

导航

神州教育培训网 打造高端培训课程,传播精品教育理念! 神州教育 神州培训 教育 企业培训 企业内训 企业管理 研修课程 简章 资本运作 房地产 国学 名师推荐