Ser*_*gio 5 c# extension-methods
我正在尝试第一次创建扩展方法,我遇到了一些麻烦...也许你们可以帮忙:)
public static class Extentions
{
public static int myMethod(this MyClass c)
{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我做"MyClass.myMethod"时,我得到q编译器错误,说该方法不存在...
这是为什么?
Mar*_*ell 19
首先,您需要一个"using"指令来包含包含具有扩展方法的类的命名空间.
第二 - 重新"MyClass.myMethod" - 扩展方法适用于实例,而不是静态 - 所以你需要:
MyClass foo = ...
int i = foo.myMethod(); // translates as: int i = Extentions.myMethod(foo);
Run Code Online (Sandbox Code Playgroud)
最后 - 如果你想在内部 MyClass
(或子类)使用扩展方法,你需要一个显式this
- 即
int i = this.myMethod(); // translates as: int i = Extentions.myMethod(this);
Run Code Online (Sandbox Code Playgroud)
这是少数几个重要的案例之一this
.
您是否导入了(using
在开头的子句)Extensions
类所在的命名空间?
using Myself.MyProduct.MyNamespace;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1596 次 |
最近记录: |