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