关于C#扩展方法介绍
来源:互联网 发布:linux gtk安装 编辑:程序博客网 时间:2024/06/13 11:46
扩展方法 Extension Method.
这个可以用在,比方有一个密封类,你不能修改它,但你又想对它继承或者扩展,这个时候就可以用到扩展方法了。
举个例子:
- class Program
- {
- static void Main(string[] args)
- {
- SealedClass x = new SealedClass();
- Console.WriteLine(x.TestMethod());
- }
- }
- sealed class SealedClass
- {
- }
- static class SealedClassExtension
- {
- public static string TestMethod(this SealedClass x)
- {
- return "";
- }
- }
在上面的例子中,可以看出,要定义方法,需要做以下几件事:
(1) 定义个扩展类;这个类必须是静态类,static的
(2) 定义扩展方法;这个方法也必须是静态的
(3) 该扩展方法的语法比较奇怪,第一个参数是被扩展的类,而且前边必须用个this关键字
下面再举一个例子。
我们经常使用到执行了IEnumerable<T>的容器,比如说List<T>。这些容器因为执行了IEnumerable<T>接口,所以都能使用一些方法,比如Aggregate。
如果去看IEnumerable<T>接口的定义,并没有包含Aggregate方法,所以Aggregate实际是一个扩展方法。
它是在静态类Enumerable中定义的。下面看一下,当然没有完全列出Enumerable类中所有的成员。
- public static class Enumerable
- {
- public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func);
- public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func);
- public static TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector);
- }
上面实际的例子中可以看出,不仅可以对类进行扩展,对接口也可以进行扩展。
- 关于C#扩展方法介绍
- 关于C#扩展方法
- C#3.0新特性之扩展方法介绍
- C#3.0新特性之扩展方法介绍
- C#3.0新特性之扩展方法介绍
- 关于C#3.0新特性以及扩展方法!
- 关于unity使用dll和c#扩展方法的小结
- c#中的扩展方法
- C# 扩展方法
- C#扩展方法本质
- C#扩展方法
- C#之扩展方法
- C#2008扩展方法
- C# 扩展方法
- C#扩展方法
- C#扩展方法
- C#扩展方法
- C# 扩展方法
- 回车、换行、空格的ASCII码值—(附ASCII码表)
- Android 源码下载、编译以及编译自己的apk
- php 常用函数总结(数组,字符串,时间,文件操作)
- Dialog
- xcode中的get-task-allow
- 关于C#扩展方法介绍
- VB.NET,PDF图片表示
- MyEclipse 创建WEB项目
- swt复杂气泡实现
- 函数指针和指针函数
- FILETIME 结构
- VC++1.5K字节实现下载并远程注入
- CoreText基础-排版必修课
- 测试知识大闯关第24期 回答