【发布时间】:2014-05-15 17:00:28
【问题描述】:
我相信我理解扩展方法的概念,除了一个细节。看来您可以在参数上使用this 使用随机static 方法创建一个随机(静态)类。我相信这个参数必须匹配你想要扩展的类的类型(或者它继承自的类)。
一个例子:
public static class MyExtendedMethods
{
public static int square(this int num)
{
int result = 0;
result = num * num;
return result;
}
}
class Program
{
static void Main(string[] args)
{
int myNum = 3;
myNum = myNum.square();
Console.WriteLine(myNum);
}
}
.NET 如何知道在哪里可以找到此类和方法 (MyExtendedMethods.square())?我看不到任何相关的课程。它是否正在查看项目中的所有类以寻找可能的扩展?
【问题讨论】:
-
静态类必须在可访问的命名空间中。
-
我只是在这里猜测,但由于 C# 有一个编译器可以在您运行应用程序之前检查所有代码,因此编译器执行某种形式的扩展方法聚合,因此它不必每次都在每个可能的位置查找。因为无论如何它必须遍历所有使用过的代码,所以没有理由不记得你什么时候看到了扩展方法。但这只是一个有根据的猜测,而不是一个知识渊博的答案。
-
@abhitalks 这是一个完全不同的问题......
-
更正您问题中的术语:
this参数必须与您要扩展的 type 类型相匹配。类型是接口或类。
标签: c# extension-methods