新Orcas语言特性:扩展方法(2)

作者:Scott Guthrie 来源:Scott Guthrie博客中文版 时间:2007-09-23 12:49:00 

扩展方法使用场景续...

利用扩展方法这个新特性来给个别类型添加方法给开发人员开辟了许多有用的扩展性使用场景。但使得扩展方法非常强有力的是,它们不仅能够应用到个别类型上,也能应用到.NET框架中任何基类或接口上。这允许开发人员建立种种可用于整个.NET框架的丰富的可组合的框架层扩展。

譬如,考虑这样一个场景,我想要一个既容易,描述性又强的方式来检查一个对象是否已经包含在一个对象集合或数组里。我可以定义一个简单的.In(集合)扩展方法,我想把它添加到.NET框架中的所有对象上,我可以在C#里这么来实现这个“In()”扩展方法:

注意上面我是如何声明扩展方法的第一个参数的:“this object o”。这表明,这个扩展方法应该适用于继承于基类System.Object的所有类型,这意味著我可以在.NET中的每个对象上使用它。

上面这个“In”方法的实现允许我检查一个指定的对象是否包含在作为方法参数传入的一个IEnumerable序列中。因为所有的.NET集合和数组都实现了IEnumerable接口,现在我拥有了一个有用的,描述性强的方法来检查一个任意的对象是否属于任何.NET集合或数组。

然后我就可以使用这个“In()”方法来看一个特定的字符串是否在一个字符串数组中:

我也可以用它来检查一个特定的ASP.NET控件是否在一个容器控件集合里:

我甚至可以将其用在象整数这样的标量数据类型上:

注意上面,你甚至可以在象整数值42这样的基本数据类型值上使用扩展方法。因为CLR支持数值类型的自动boxing/unboxing,扩展方法可以直接使用在数值和其他标量数据类型上。

你大概可以开始从上面的例子中看出,扩展方法可以促成一些非常丰富和描述性强的扩展性使用场景。当使用于.NET中常见的基类和接口上时,他们可以促成一些非常好的特定于某个领域(domain specific)的框架和组合使用场景。

标签:Orcas,扩展
0
投稿

猜你喜欢

  • python实现时间序列自相关图(acf)、偏自相关图(pacf)教程

    2023-03-01 06:37:02
  • Python数据分析之pandas函数详解

    2021-09-04 21:54:52
  • python特效之字符成像详解

    2021-06-07 02:18:45
  • Vue自定义指令中无法获取this的问题及解决

    2024-05-29 22:46:46
  • MySQL实现字符串截取的图文教程

    2024-01-16 05:44:05
  • 面向对象CSS FAQ[译]

    2009-10-27 15:59:00
  • python列表生成器迭代器实例解析

    2022-01-14 15:09:20
  • Python私有属性私有方法应用实例解析

    2022-11-08 05:09:03
  • python学习基础之循环import及import过程

    2022-04-02 13:23:25
  • Go语言连接Oracle数据库的方法

    2024-01-14 04:15:33
  • 200 行python 代码实现 2048 游戏

    2021-08-06 16:17:35
  • php快递单号查询接口使用示例

    2023-10-25 07:39:55
  • php中实现记住密码自动登录的代码

    2023-11-14 18:36:14
  • Python OpenCV简单的绘图函数使用教程

    2023-08-02 23:22:22
  • windows支持哪个版本的python

    2023-05-15 08:42:16
  • 七个生态系统核心库[python自学收藏]

    2021-09-17 03:51:12
  • ASP.NET程序中用Repeater实现分页

    2024-05-09 09:02:48
  • 对python中使用requests模块参数编码的不同处理方法

    2022-11-02 01:30:29
  • 分享20个数据库设计的最佳实践

    2024-01-24 09:28:53
  • 如何在Python里使用ChatGPT及ChatGPT是什么?注册方式?

    2022-12-01 22:43:12
  • asp之家 网络编程 m.aspxhome.com