我想爲IEnumerable編寫一個類似於Select的TrySelect的擴展,TrySelect會忽略選擇Func引發異常的任何元素的選擇。IEnumerable上的TrySelect
我有以下,它的工作原理。
public static IEnumerable<TResult> TrySelect<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
{
List<TResult> ret = new List<TResult>();
foreach (TSource input in source)
{
try
{
ret.Add(selector(input));
}
catch { }
}
return ret;
}
我想知道如何編寫擴展,而無需使用清單以保存不填充元素,直到他們被稱爲的IEnumerable的行爲。
捕獲異常無論類型是有風險的。考慮在特定的異常類型上進行泛化,或者重構基礎函數。 – TrueWill