为了避免更大的switch-case-block,我想将(匿名)函数或方法添加到Dictionary 。这个过程已经有很多解释。但是,我试图存储的函数/方法必须采用参考参数:
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
- 关键字是Dictionary-instantiation中的无效标记。
那么,我怎样才能在适当的C#中引用编译器来将这些带有引用参数的方法存储到我的Dictionary中?虽然我使用上面的Init方法,但要填写Dictionary,有没有办法在这些情况下直接用存储在其中的函数/方法实例化它?
非常感谢帮助!
答案 0 :(得分:5)
声明您自己的委托类型:
delegate bool MyDelegate (ref object obj, string param)
我希望我的语法正确。自从我上次使用C#语言的这个功能以来已经有很长一段时间了。由于引入了Func
类型,因此很少有用。