将变量传递给函数有什么不同(以及为什么要使用此语法)?
return _acks.GetOrAdd(id, new AckInfo()).Tcs.Task;
return _acks.GetOrAdd(id, _ => new AckInfo()).Tcs.Task;
return _acks.GetOrAdd(id, (_) => new AckInfo()).Tcs.Task;
围绕此最佳做法/用例是什么?
第41行
答案 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。