为了避免更大的 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
关键字在字典实例化中是无效标记。
那么,如何用正确的 C# 引诱编译器将这些带有引用参数的方法存储到我的字典中?虽然我使用了上面的Init方法来填充Dictionary,但是在这种情况下有没有办法直接用其中存储的函数/方法来实例化它?
感谢帮助!
最佳答案
声明您自己的委托(delegate)类型:
delegate bool MyDelegate (ref object obj, string param)
我希望我的语法是正确的。自从我上次使用 C# 语言的这个功能以来,已经有很长一段时间了。由于引入了 Func
类型,因此它很少有用。
关于c# - 如何将带有 ref 参数的函数/方法添加到字典对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027564/