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

时间:2011-04-06 05:20:30

标签: c# extension-methods

假设我想在B类中添加扩展方法。 我可以通过在扩展方法中使用“this”引用来获取对B类实例的引用吗?

2 个答案:

答案 0 :(得分:6)

是和否。简要介绍一下文档非常清楚。

根据定义,扩展方法的第一个参数是指向调用/附加方法的对象的指针,它实际上是this关键字引用的变量,但它有自己的名称:

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;
        }
    }   
}

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

答案 1 :(得分:1)

没有;你必须使用参数的实际名称。