c# 4.0新功能--扩展方法

扩展方法,就是在不修改类文件的情况下,为类添加新方法。c# 4.0中大量使用了扩展方法,如Linq查询的GroupBy、OrderBy、Average等方法。

 

eg:      在不修改System.String的情况下,为 System.String 类定义的一个扩展方法WordCount

//定义代码
namespace ExtensionMethods
{
    public static class MyExtensions
    {
        //定义扩展方法WordCount
        public static int WordCount(this String str)
        {
            return str.Split(new char[] { ' ', '.', '?' }, 
                             StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }   
}

  调用方式1:使用实例方法 (推荐使用此方法)

//调用代码
using ExtensionMethods;
...

    string s = "Hello Extension Methods";
    int i = s.WordCount();

     ...

 调用方式2:使用静态方式

int i = MyExtensions.WordCount(s);

 

 限制:

1、只能在静态类中定义扩展方法,且扩展方法自身必须是一个静态方法。
2、扩展方法中的首个参数必须是this,最后紧跟要扩展的类的名称。
3、扩展方法可以被正确的对象实例调用,也可以使用静态类名静态的调用。 
4、扩展方法不要重名,否则扩展方法将不能被调用到。
5、扩展方法无法访问它们所扩展的类型中的私有变量。因为扩展方法是静态方法,并不属于类成员中的标准方法,因此不能直接进行访问。
6、在调用扩展方法时,需要引用定义扩展方法的命名空间。

posted on 2013-07-30 22:04  雪域高原梦  阅读(208)  评论(0编辑  收藏  举报

导航