[.NET学习笔记]C#新特性——extension(扩展)方法

在C#中,您不能继承和扩充用访问标识符标记为“封装”的类型。但在C# 3.0中,扩展方法允许您扩充任何类,甚至是标记为封装的类。扩展方法就是将静态方法(必须声明成static)插入到某个类和其子类中
   (也就是说,在这些类中可以使用在外部定义的静态方法)。

    那么要往哪个类中插入呢?   这就要在定义静态方法时通过this关键字指定了。

    例如在string类中加入一个静态方法,它的定义方式为:

namespace MyExtensionMethods
{
 public static class Extension
 {
  public static void NoSpaces(this string s)
  {
   return s.Replace(" ", "");
  }
 }
}

在一个类中导入这个extension方法时,开发者就能够对这个类包含的任何字符串调用NoSapces()方法。
extension方法的第一个参数决定extension方法的有效类型。在这种情况下,“这个字符串数据”(this string s)表明扩展方法适用于字符串类;如果extension方法以“这个对象数据”(this object data)为第一个参数,则说明这个方法对每个对象有效。
要表明您希望导入扩展方法,只需在它们的命名空间中包括一个using指令。例如,要应用上面说明的方法,需要在类文件中包括一个using MyExtensionMethods指令:(列表B)
列表B

using MyExtensionMethods;
namespace MyNamespace
{
 public class MyClass
 {
  public MyClass()
  {
   string data = "this is my data";
   //nospaces will contain "thisismydata".
   string nospaces = data.NoSpaces();
  }
 }
}

在使用扩展方法时应注意以下两点:

1. 扩展方法所在的类名可以是任意合法的类名。

2. 扩展方法所在的类必须和使用扩展方法的代码在同一个命名空间里,

否则无法编译通过。

.NET Framework扩展方法尤其在很多类需要同样的方法, 而这些类又无法继承其它类时特别有用。 当然,在要对某个类进行扩展,但我们并没有源代码时,扩展方法也可以派上用场。 如:可以扩充ASP.NET MVC2.0中的View的HtmlHelper类的静态方法。

本文根据:http://blog.csdn.net/zlghitler/article/details/1706086 整理.

转载于:https://www.cnblogs.com/xujiancai/archive/2012/10/17/2727795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值