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.扩展方法可以带参数
C#3.0新特性之扩展方法介绍的更多相关文章
- C# 7.0 新特性:本地方法
C# 7.0:本地方法 VS 2017 的 C# 7.0 中引入了本地方法,本地方法是一种语法糖,允许我们在方法内定义本地方法.更加类似于函数式语言,但是,本质上还是基于面向对象实现的. 1. 本地方 ...
- 背水一战 Windows 10 (1) - C# 6.0 新特性
[源码下载] 背水一战 Windows 10 (1) - C# 6.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 6.0 新特性 介绍 C# 6.0 的新特性 示例1 ...
- 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性
原文:返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 [索引页][源码下载] 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 ...
- 转载 精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) https://www.cnblogs.com/webabcd/archive/2010/06/03/1750449.html
精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) 介绍C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parall ...
- 背水一战 Windows 10 (43) - C# 7.0 新特性
[源码下载] 背水一战 Windows 10 (43) - C# 7.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 7.0 新特性 介绍 C# 7.0 的新特性 示例 ...
- 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性
[索引页][源码下载] 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性 作者:webabcd 介绍asp.net mvc 之 asp.net mvc 5.0 新 ...
- C# 7.0 新特性2: 本地方法
本文参考Roslyn项目中的Issue:#259. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...
- C# 7.0 新特性1: 基于Tuple的“多”返回值方法
本文基于Roslyn项目中的Issue:#347 展开讨论. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: ...
- Visual Studio 2015速递(1)——C#6.0新特性怎么用
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
随机推荐
- 百度ECHARTS 饼图使用心得 处理data属性
做过CRM系统的童鞋应该都或多或少接触过hicharts或者echarts等数据统计插件.用过这两款,个人感觉echarts的画面更好看.至于功能,只有适合自己的才是最好的. 今天来说说我使用echa ...
- ubuntn下 nginx+phpstorm 中配置xdebug调试
xdebug安装和配置说明,主要用于个人学习记录. 一.echo phpinfo(); 搜素xdebug,若未搜素到,则标识未安装或安装失败. 二.拷贝步骤1中输出的所有结果.访问http://xde ...
- C#设计模式(4)——抽象工厂模式
一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法模式每个具体工厂类只完成单个实例的创 ...
- VisualSvn server 权限配置
库上,配置 EveryOne 有读写权限. 下面的文件夹,再根据情况,取消 EveryOne 的读写权限,添加另一个用户组的读写权限. 它的规则是: 子目录权限覆盖父目录权限.
- KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础
原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...
- Nutz Dao实体中索引注解的使用(@TableIndexes@Index)
Nutz是一组轻便小型的框架的集合, 各个部分可以被独立使用,把SSH的精华封装在一个1M左右的jar包中,Nutz不对其他任何第三方库产生依赖,如果不考虑数据库链接和日志的话,创建完美的Web应用只 ...
- linux php环境搭建以及magento安装教程
听朋友用magento在搭建电商系统,我好奇.遂自己下载了一个包部署了一套. 主机采用linux center os6.5,安装程序非常顺利,部署一套大概费时一个小时左右. ########### ...
- [jQuery学习系列五 ]5-Jquery学习五-表单验证
前言最近总是有一个感觉,虽然这些东西都自己学习并一个案例一个案例的去验证过了.但是总觉得不写成博客记录下来这些都不是自己的东西(心理作用,哈哈).所以每当学习或者复习相关的知识我都喜欢记录下来,下面开 ...
- 将外卖O2O广告一棍子打成竞价排名,秤把平了吗?
近日,诸多媒体报道称美团外卖.饿了么等外卖O2O将竞价排名引入外卖平台当中进行广告运营一事闹得沸沸扬扬.那么,美团外卖.饿了么真的都是竞价排名吗? 其实,美团外卖的付费推广仅仅只是针对列表的固定位置, ...
- mysql输入密码后闪退怎么办?
第一: 首先需要想到的是mysql的服务可能没开,首先打开mysql的服务 第二: 打开Mysql的命令行输入密码即可 第三: 登录成功 第四: 顺便验证自己安装的mysql是否成功 输入显示所有数据 ...