C# 返回值为C的函数字典#

C# 返回值为C的函数字典#,c#,dictionary,lambda,C#,Dictionary,Lambda,我在创建函数字典时遇到问题。我遇到的问题是如何从被调用的方法返回值 我尝试过类似的方法,但它不起作用,因为我从匿名函数返回值时出错。我不知道如何正确调用lambda,因为我看到的示例没有参数,而我有输入参数和返回值 private static Dictionary<string, Action<String, String>> dictionary= new Dictionary<string, Action<String, String>>()

我在创建函数字典时遇到问题。我遇到的问题是如何从被调用的方法返回值

我尝试过类似的方法,但它不起作用,因为我从匿名函数返回值时出错。我不知道如何正确调用lambda,因为我看到的示例没有参数,而我有输入参数和返回值

private static Dictionary<string, Action<String, String>> dictionary= new Dictionary<string, Action<String, String>>()
{
      {"key",
          (arg1, arg2) => {
              Class instance= new Class();
              return instance.MyFunction(arg1, arg2);)
      }
}

我知道将MyFunction设置为静态会更简单,但是
正在实现一个接口,我正在开发C#7.3

您需要使用
Func
,而不是
操作
,因为
操作
无法返回值。
Func
的最后一个类型参数是返回类型

    private static Dictionary<string, Func<String, String, String>> dictionary =
        new Dictionary<string, Func<String, String, String>>()
        {
            {
                "key",
                (arg1, arg2) =>
                {
                    Class instance = new Class();
                    return instance.MyFunction(arg1, arg2);
                }
            }
        };
私有静态字典=
新字典()
{
{
“钥匙”,
(arg1、arg2)=>
{
类实例=新类();
返回instance.MyFunction(arg1、arg2);
}
}
};

此处的详细信息:

您应该使用
Func
委托而不是
Action
,因为它将返回由最后一个类型参数指定的类型的值(与
Action
)。假设
MyFunction
返回
string
,您可以像

私有静态字典=
新词典
{
{
“钥匙”,
(arg1、arg2)=>
{
var实例=新类();
返回instance.MyFunction(arg1、arg2);
}
}
};
像这样调用

var result=dictionary[“key”](“abc”,“123”);

您还应该在代码中用一个额外的括号来修复打字错误。

您不能从
void
方法返回,也不能使用额外的括号。
MyFunction
的签名是什么?是的,我知道。我想问的是,如何创建具有返回类型的函数的字典,您应该为此使用
Func
    private static Dictionary<string, Func<String, String, String>> dictionary =
        new Dictionary<string, Func<String, String, String>>()
        {
            {
                "key",
                (arg1, arg2) =>
                {
                    Class instance = new Class();
                    return instance.MyFunction(arg1, arg2);
                }
            }
        };