【发布时间】:2019-08-18 05:37:00
【问题描述】:
第 3 行调用 Contains 但没有括号的“构造”的名称是什么?它是某种语法糖吗?
string current = "02";
string[] list = {"00", "01", "02", "03", "10"};
if (list.Any(current.Contains)) {
// logic
}
我只是不知道它为什么和如何工作,也不知道它叫什么?
【问题讨论】:
-
是方法组。它不会被调用,而是转换为兼容的委托类型。 github.com/dotnet/csharplang/blob/master/spec/…
-
你没有打电话给
current.Contains。您正在传递对current.Contains的引用。然后,通过该引用,它被list.Any()调用——或者可能通过list.Any()传递给它的其他方法。编写自己的List.Any()等价物是一个非常有用的练习。 -
没有括号,因为您没有执行包含,而是将方法引用“传递”给 Any-function。
标签: c#