7
在下面的C#代码中,我发现_()
的用法很奇怪。谁能解释这是什么意思?语法的含义:return _(); IEnumerable <TSource> _()
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (keySelector == null) throw new ArgumentNullException(nameof(keySelector));
return _(); IEnumerable<TSource> _()
{
var knownKeys = new HashSet<TKey>(comparer);
foreach (var element in source)
{
if (knownKeys.Add(keySelector(element)))
yield return element;
}
}
}
我*真的*希望这种模式不赶上。这只是丑陋的。 –
我从不喜欢本地函数如何缺少任何类型的标识关键字 - 例如,它们很容易被混淆为本地代理或对象初始化列表。一个简单的'func'关键字或强制lambda语法'=>'会有帮助)。 – Dai
无论如何,本地功能似乎没有必要。 –