Jon*_*ood 1 c# lambda delegates
我想创建一个包含委托的静态数组.我将使用此数组来查找我需要的委托.例如:
class HandlerID
{
public int ID { get; set; }
public Func<int, bool> Handler { get; set; }
}
protected const HandlerID[] HandlerIDs = {
new SectionRenderer() { ID = SectionTypes.Type1, Handler = MyType1Handler },
new SectionRenderer() { ID = SectionTypes.Type2, Handler = MyType2Handler },
// Etc.
}
protected bool MyType1Handler(int arg)
{
return false;
}
// Etc.
Run Code Online (Sandbox Code Playgroud)
然而,分配给Handler中HandlerID阵列提供了以下错误:
非静态字段,方法或属性"MyType1Handler(int)"需要对象引用
我更喜欢数组,const所以不必为我的每个实例初始化.有没有办法在静态数组中存储实例方法?
这没有意义.
当您调用数组中的委托时,他们需要您的类的实例来操作.
因此,每个类实例都需要一组单独的委托.
如果方法实际上不需要操作实例,则可以制作它们static,这将解决问题.
或者,您可以将实例作为委托的参数,并使用调用该方法的lambda表达式: Handler = (instance, arg) => instance.MyType1Handler(arg)
| 归档时间: |
|
| 查看次数: |
774 次 |
| 最近记录: |