假设我有2个类,A类和B类.A类创建一个B类实例.A类有一个函数,我想从B类传递给一个方法.
class A {
void Main(string[] args) {
B classB=new B();
DelegateCaller(new delFunction(classB.TheFunction()); // <-- Won't compile (method name expected)
DelegateCaller(new delFunction(B.TheFunction()); // <-- Won't compile (object reference is req'd)
}
public delegate string delFunction();
public DelegateCaller(delFunction func) {
System.Console.WriteLine(func());
}
}
class B {
public string TheFunction() {
return "I'm Printing!!!";
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定它是否是语法问题,或者它只是我不能做的事情.也许我需要在B中定义委托,但在A中引用它?什么B的这个指针?
这只是一个语法问题; 摆脱括号后classB.TheFunction- 它们表示你想要调用方法.
DelegateCaller(new delFunction(classB.TheFunction));
Run Code Online (Sandbox Code Playgroud)
请注意,方法组中存在隐式转换,因此您可以执行以下操作:
DelegateCaller(classB.TheFunction);
Run Code Online (Sandbox Code Playgroud)
另请注意,在这种情况下创建自己的委托类型是不必要的; 你可以使用内置Func<string>类型.
编辑:正如Darin Dimitrov指出的那样,调用实例方法也是一个无关的问题,就像它是一个静态方法一样.
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |