将变量传递给构造函数

时间:2013-11-19 02:29:06

标签: c# syntax signalr

将变量传递给函数有什么不同(以及为什么要使用此语法)?

return _acks.GetOrAdd(id, new AckInfo()).Tcs.Task;

return _acks.GetOrAdd(id, _ => new AckInfo()).Tcs.Task;

return _acks.GetOrAdd(id, (_) => new AckInfo()).Tcs.Task;

围绕此最佳做法/用例是什么?

Here is the code in context

第41行

2 个答案:

答案 0 :(得分:3)

我写了那段代码,所以我可以回答:)。第二个和第三个是相同的,但第一个的区别在于你每次都分配一个新的AckInfo与创建一个将在需要时运行的委托。它推迟了AckInfo的分配,直到最后一分钟。

答案 1 :(得分:0)

最后两个是相同的。它们是空的Action,没有参数。下划线表示占位符表示虚无。

第一个不会编译..假设方法预期为Action。否则,如果出现过载,它就会出现。

所以,答案是没有最佳实践。它们是相同的..或者它们用于特定目的(Action与否Action)。

我建议你have a read up on what Delegates are in C#。具体而言,what the Action delegate is useful for