C# Func<;T、 U,双>;作为构造函数中的参数
我从下面一段相对复杂的代码中摘录了以下内容C# Func<;T、 U,双>;作为构造函数中的参数,c#,C#,我从下面一段相对复杂的代码中摘录了以下内容 IDictionary<string, double> startingProbabilitiesDict = GetNewIDictionaryStringDouble(); IDictionary<string, double> transitionProbabilitiesDict = GetNewIDictionaryStringDouble(); IDictionary<string, double> em
IDictionary<string, double> startingProbabilitiesDict = GetNewIDictionaryStringDouble();
IDictionary<string, double> transitionProbabilitiesDict = GetNewIDictionaryStringDouble();
IDictionary<string, double> emissionProbabilitiesDict = GetNewIDictionaryStringDouble();
...
var fbv = new SomeClass<string, string>
(startingProbabilities: (s => startingProbabilitiesDict[s]),
transitionProbabilities: ((sOut, sIn) => transitionProbabilitiesDict[sOut][sIn]),
emissionProbabilities: ((s, o) => emissionProbabilitiesDict[s][o]));
我对这个符号感到困惑:
startingProbabilities: (s => startingProbabilitiesDict[s])
似乎认为开始概率:
正在指定构造函数的第一个参数,但是为什么需要冒号,这个符号叫什么?它被称为
名称是可选的,如果您将用法与可选参数结合使用,它会变得更有趣(下面的简化/哑示例):
它被称为
名称是可选的,如果您将用法与可选参数结合使用,它会变得更有趣(下面的简化/哑示例):
startingProbabilities: (s => startingProbabilitiesDict[s])
[Test]
public void NamedAndUnnamedTest()
{
Assert.AreEqual("Only value1 was supplied", DummyMethod(value1: 1));
Assert.AreEqual("Only value1 was supplied", DummyMethod(1));
Assert.AreEqual("Only value2 was supplied", DummyMethod(value2: 1));
Assert.AreEqual("Both arguments were supplied", DummyMethod(1, 2));
}
private string DummyMethod(int value1 = 0, int value2 = 0)
{
if (value1 != 0 && value2 != 0)
return "Both arguments were supplied";
if (value1 == 0)
return "Only value2 was supplied";
return "Only value1 was supplied";
}