扩展方法可以访问"this"对象吗?

Jos*_*eld 2 c# extension-methods

比方说,我希望我能得到的扩展方法是利用我的扩展方法里面的"this"引用调用在B类的实例的引用,以扩展方法添加到B级?

小智 6

是的,不是.简要介绍一下文档非常清楚.

每个定义的扩展方法的第一个参数是指向方法从被叫/附接到对象,它实际上是由该关键字,但与它自己的名称引用的变量:

http://msdn.microsoft.com/en-us/library/bb383977.aspx

namespace ExtensionMethods
{
    public static class MyExtensions
    {
        public static int WordCount(this String str)
        {
            return str.Split(new char[] { ' ', '.', '?' }, 
                             StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

这使得那里有一个名为"str"的"this"变得非常容易.因此,您不能使用"this"(因为这将指向定义扩展方法的类的现有实例),但您可以声明自己的替换变量,该变量指向附加扩展方法的对象.