Trong mã C# dưới đây, tôi thấy việc sử dụng _()
lạ. Bất cứ ai có thể giải thích điều này có nghĩa là gì?Ý nghĩa cú pháp: 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;
}
}
}
Tôi * thực sự * hy vọng mẫu này không bắt kịp. Đó chỉ là xấu xí. –
Tôi không bao giờ thích cách các hàm cục bộ thiếu bất kỳ loại từ khóa xác định nào - chúng dễ dàng bị nhầm lẫn với danh sách đại biểu hoặc đối tượng khởi tạo đối tượng cục bộ, chẳng hạn. Từ khóa 'func' đơn giản hoặc cú pháp lambda bắt buộc' => 'sẽ giúp ích). – Dai
Chức năng cục bộ có vẻ không cần thiết ở đây. –