【发布时间】:2015-07-13 16:29:44
【问题描述】:
为了避免更大的 switch-case-block,我想添加(匿名)函数或方法到字典。这个过程已经有很多解释了。但是,我尝试存储的函数/方法必须采用引用参数:
private static Dictionary<int, Func<ref object, string, bool>> someMethDict =
new Dictionary<int, Func<ref object, string, bool>>(){};
public static void Init ()
{
someMethDict.Add(0, someMeth);
}
public static bool someMeth (ref object obj, string param)
{
// do something
return true;
}
此代码示例无法编译,因为 ref-keyword 是 Dictionary-instantiation 中的无效标记。
那么,我怎样才能在正确的 C# 中引诱编译器将这些方法与引用的参数一起存储到我的字典中?虽然我用了上面的Init-method来填写Dictionary,有没有办法在这种情况下直接用里面存储的函数/方法来实例化呢?
感谢您的帮助!
【问题讨论】:
-
不能访问静态成员
someMethDict.Add(0, someMeth);中的非静态成员 -
另外
someMeth与已定义委托的签名不匹配。 -
@JenishRabadiya 你是对的。我错过了
someMeth的静态消息。
标签: c# function dictionary methods reference