字典中的函数,这段代码是如何工作的? 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 expression.

字典中的lambda表达式表示整数之间的算术运算。因此,对于加法 (+)、乘法 (*)、减法 (-) 和除法 (/) 这四种运算中的每一种,都提供了描述这些运算的 lambda 表达式。

当我们写出以下内容时:

_operationFunction[op](num1, num2)

获取与键 op 关联的字典的值,然后将返回的函数(值)应用于整数 num1num2.

因此,如果 op 的值是字符串 "+",则 _operationFunction[op] returns 对委托的引用,本质上由 lambda 表达式描述:

(fst, snd) => (fst + snd)

然后这个引用指向的“函数”被应用于参数num1num2

您可以在 Func<T1,T2,TResult> 阅读更多有关代码中使用的重新分级的内容。