c#编程指南(五) 扩展方法(Extension Method)
C# 3.0就引入的新特性,扩展方法可以很大的增加你代码的优美度,扩展方法提供你扩展.NET Framewoke类的扩展途径,书写和规则也简单的要命。
编写扩展方法有下面几个要求:
第一:扩展方法所在的类必须是全局的,不能是内部嵌套类。
第二:扩展方法的类是静态类。
第三:扩展方法是静态方法。
第四:扩展方法的第一个参数的数据类型必须是要扩展类型。
第五:扩展方法的第一个参数使用this关键字。
下面是一段很简单的代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ExtensionMethod 7 { 8 public static class TestClass 9 { 10 public static void Print(this int i) 11 { 12 Console.WriteLine(i); 13 } 14 15 public static int Times(this int i) 16 { 17 return i * 2; 18 } 19 20 public static int Add(this int i, int d) 21 { 22 return i + d; 23 } 24 } 25 26 class Program 27 { 28 static void Main(string[] args) 29 { 30 int number = 4; 31 number.Print(); 32 Console.WriteLine(number.Times()); 33 Console.WriteLine(number.Add(5)); 34 } 35 } 36 }
代码很简单,扩展的是int类型。
第一个是定义了一个Print方法,是没有参数没有返回值的扩展方法。
第二个是定义了一个带返回值无参数的扩展方法。
第三个是定义了一个有返回值有参数的扩展方法。
c#编程指南(五) 扩展方法(Extension Method)的更多相关文章
- [译文]c#扩展方法(Extension Method In C#)
原文链接: https://www.codeproject.com/Tips/709310/Extension-Method-In-Csharp 介绍 扩展方法是C# 3.0引入的新特性.扩展方法使你 ...
- [0] C# 扩展方法(Extension Method)
有时有这样的情况,有一个类,你不能修改它,但你又想对它扩展(添加一个方法),这个时候就可以用到扩展方法了.请看下面的例子: using System;using System.Collections. ...
- .NET 扩展方法(Extention Method)的要点
扩展方法Extention Method的主要介绍在:http://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.100).aspx. 扩展方法的意义在 ...
- View Programming Guide for iOS ---- iOS 视图编程指南(五)---Animations
Animations Animations provide fluid visual transitions between different states of your user inter ...
- JavaScript面向对象编程指南(五) 原型
第5章 原型 5.1 原型属性 function f(a,b){ return a*b; }; // length 属性 f.length; // constructor 构造属性 f.constru ...
- Java中的函数式编程(四)方法引用method reference
写在前面 我们已经知道,lambda表达式是一个匿名函数,可以用lambda表达式来实现一个函数式接口. 很自然的,我们会想到类的方法也是函数,本质上和lambda表达式是一样的,那是否也可以用类 ...
- C#创建自己的扩展方法
C#可以创建自己的扩展方法Extension Method: 参考这篇<判断是否为空然后赋值>http://www.cnblogs.com/insus/p/8004097.html 里,前 ...
- 【转】C# / Extension 扩展方法
扩展方法简介扩展方法使你能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调 ...
- 在jQuery定义自己的扩展方法函数
今早复习昨天的练习jQuery的DropDownList联动功能,如果想看回<jQuery实现DropDownList(MVC)>http://www.cnblogs.com/insus/ ...
随机推荐
- 实现接口必须要加注解@Override吗
不一定的,但是我们的编译器在查询我们重写的方法,方法名,参数,返回类型的时候,是能够根据注解来帮助我们判断方法重写的正确与否 所以我们有必要在编写过程中加上@Override,虽然我们的eclipse ...
- Asp.Net webconfig中使用configSections的用法
最近闲来无事,研究研究公司的框架,无意中打开了webconfig页面,发现了一个我不认识的节点<configSections></configSections>,于是百度之,大 ...
- sencha touch overlay 里使用 list
1 sencha touch 中 list 如果不设置一个固定高度或 flex : 1, list 的内容就不会显示出来. 主要是因为 list 是可滚动的,你不设置高度 ,list 的高度默认就是 ...
- JBoss7.1.1远程无法访问
一般情况下在JBoss7.1.1.Final版本中配置standalone/configuration/standalone.xml<interfaces>里面name为public的&l ...
- 运行时用AnimatorOverrideController动态加载动画片段
https://blog.csdn.net/tlrainty/article/details/54602786 项目中经常会遇到这种情况:很多模型动画的AnimatorController是一模一样的 ...
- Scrapy框架学习(四)爬取360摄影美图
我们要爬取的网站为http://image.so.com/z?ch=photography,打开开发者工具,页面往下拉,观察到出现了如图所示Ajax请求, 其中list就是图片的详细信息,接着观察到每 ...
- telnet 命令使用方法详解
参考自:这里 什么是telnet? 简单来说,可以把telnet当作一种通信协议.但对于入侵者来说,telnet只是一种远程登陆的工具.一旦入侵者与远程主机建立了telnet链接,入侵者便可以使用目标 ...
- Java生成验证码(一)
一.为什么要使用验证码 我们要通过验证码,由用户肉眼识别其中的验证码信息,从而区分用户是人还是计算机. 二.什么是验证码 验证码:是一种区分用户是计算机还是人的公共全自动程序. ...
- Java 重写(Override)与重载(Overload)区别
2019-04-1217:31:19 (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading). (2)方法重写是在子 ...
- AngularJS 指令 实现文本水平滚动效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...