假设我想在B类中添加扩展方法。 我可以通过在扩展方法中使用“this”引用来获取对B类实例的引用吗?
答案 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)
没有;你必须使用参数的实际名称。