博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#3.0新特性之扩展方法介绍
阅读量:6906 次
发布时间:2019-06-27

本文共 2238 字,大约阅读时间需要 7 分钟。

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.扩展方法可以带参数

转载地址:http://zxgdl.baihongyu.com/

你可能感兴趣的文章
谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法
查看>>
EhCache 分布式缓存/缓存集群
查看>>
偶遇with ties
查看>>
NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息...
查看>>
手机网页Html代码实现(解决显示页面很小的问题)
查看>>
指针与储物箱的关系
查看>>
sqlserver 的事务和c#的事务
查看>>
kernelchina.org内核研究
查看>>
模拟Asp.Net Forums实现可以换皮肤的控件 (转载)
查看>>
python使用(一)
查看>>
认真分析mmap:是什么 为什么 怎么用【转】
查看>>
ios 上拉载入下拉刷新Dome
查看>>
Objective-C:NSMutableString类的常见操作
查看>>
用javascript操作xml
查看>>
突破Windows系统默认用户句柄与GDI句柄限制
查看>>
SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本
查看>>
光流定位原理是什么??【转】
查看>>
POJ 2778 DNA Sequence (AC自己主动机 + dp)
查看>>
JS排序的运用
查看>>
堆排序
查看>>