c# - 如何将带有 ref 参数的函数/方法添加到字典对象?

标签 c# function dictionary methods reference

为了避免更大的 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/

相关文章:

c# - 在 ObservableCollection 上实现 AddRange 并适当支持 DataBinding

C# 旋转变换

javascript - 带有变量的viewer.loadImageFromJSON 不起作用

linux - 是否有适用于 Windows 操作系统的 native 词表?

c# - 哪种机制是扩展 Dictionary 以处理丢失键的更好方法,为什么?

c# - 使用 ForEach 将随机值分配给数组不起作用,但是 for 语句可以正常工作吗?

c# - 如何自动注册Web服务器控件所需的HttpHandler?

javascript - 有没有更好的方法来避免 if/then/else?

r - 如何通过 R 函数将多个参数传递给 ggplot,包括美学和比例格式?

c++ - 映射和迭代器(in)验证