字典中的函数,这段代码是如何工作的? C#
Func in dictionary, how does this code work? C#
我是 C# 的新手,我的教授给了我这段代码,你能解释一下它是如何工作的吗?我很好奇所有这些“=>”运算符,以及 Dictionary 中发生的事情。
_operationFunction = new Dictionary<string, Func<int, int, int>>
{
["+"] = (fst, snd) => (fst + snd),
["-"] = (fst, snd) => (fst - snd),
["*"] = (fst, snd) => (fst * snd),
["/"] = (fst, snd) => (fst / snd)
};
_operators.Push(_operationFunction[op](num1, num2));
Func<int, int, int> Operation(String input) => (x, y) =>
(
(input.Equals("+") ? x + y :
(input.Equals("*") ? x * y : int.MinValue)
)
);
_operators.Push(Operation(op)(num1, num2));
这个(以及其他表达式,带有 =>
)
(fst, snd) => (fst + snd)
字典中的lambda表达式表示整数之间的算术运算。因此,对于加法 (+)、乘法 (*)、减法 (-) 和除法 (/) 这四种运算中的每一种,都提供了描述这些运算的 lambda 表达式。
当我们写出以下内容时:
_operationFunction[op](num1, num2)
获取与键 op
关联的字典的值,然后将返回的函数(值)应用于整数 num1
和 num2
.
因此,如果 op
的值是字符串 "+"
,则 _operationFunction[op]
returns 对委托的引用,本质上由 lambda 表达式描述:
(fst, snd) => (fst + snd)
然后这个引用指向的“函数”被应用于参数num1
和num2
。
您可以在 Func<T1,T2,TResult> 阅读更多有关代码中使用的重新分级的内容。
我是 C# 的新手,我的教授给了我这段代码,你能解释一下它是如何工作的吗?我很好奇所有这些“=>”运算符,以及 Dictionary 中发生的事情。
_operationFunction = new Dictionary<string, Func<int, int, int>>
{
["+"] = (fst, snd) => (fst + snd),
["-"] = (fst, snd) => (fst - snd),
["*"] = (fst, snd) => (fst * snd),
["/"] = (fst, snd) => (fst / snd)
};
_operators.Push(_operationFunction[op](num1, num2));
Func<int, int, int> Operation(String input) => (x, y) =>
(
(input.Equals("+") ? x + y :
(input.Equals("*") ? x * y : int.MinValue)
)
);
_operators.Push(Operation(op)(num1, num2));
这个(以及其他表达式,带有 =>
)
(fst, snd) => (fst + snd)
字典中的lambda表达式表示整数之间的算术运算。因此,对于加法 (+)、乘法 (*)、减法 (-) 和除法 (/) 这四种运算中的每一种,都提供了描述这些运算的 lambda 表达式。
当我们写出以下内容时:
_operationFunction[op](num1, num2)
获取与键 op
关联的字典的值,然后将返回的函数(值)应用于整数 num1
和 num2
.
因此,如果 op
的值是字符串 "+"
,则 _operationFunction[op]
returns 对委托的引用,本质上由 lambda 表达式描述:
(fst, snd) => (fst + snd)
然后这个引用指向的“函数”被应用于参数num1
和num2
。
您可以在 Func<T1,T2,TResult> 阅读更多有关代码中使用的重新分级的内容。