我知道这听起来很奇怪,但我什至不知道如何在互联网上搜索此语法,而且我也不知道这到底意味着什么。
所以我看了一些MoreLINQ代码,然后我注意到了这种方法
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;
}
}
}
这个奇怪的回报表是什么?return _();
?
@Steve,我想知道OP是否
—
罗布
return _(); IEnumerable<TSource> _()
比指的更多yield return
?
我认为他的意思是这条线
—
Mateusz
return _(); IEnumerable<TSource> _()
。他可能会对它的外观感到困惑,而不是对实际的return语句感到困惑。
@AkashKava OP说有一个奇怪的返回声明。不幸的是,该代码包含两个 return语句。因此,如果人们对他/她指的是什么感到困惑,这是可以理解的。
—
mjwills
编辑了问题,再次为造成的困惑感到抱歉。
—
kuskmen '17
return _(); IEnumerable<TSource> _()
?