扩展方法是否应处理null
本文关键字:处理 null 是否 方法 扩展 | 更新日期: 2023-09-27 17:58:44
这是坏做法吗(返回的null
部分)?
public static ObservableCollection<TSource> ToObservableCollection<TSource>(
this IEnumerable<TSource> source)
{
if (source == null) return null;
return new ObservableCollection<TSource>(source);
}
您应该抛出一个ArgumentNullExcception
。大部分。NET Framework扩展方法可以做到这一点。或者,什么也不做,让ObservableCollection<T>
构造函数来做
public static ObservableCollection<TSource> ToObservableCollection<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
return new ObservableCollection<TSource>(source);
}
我写我的是为了处理null参数,所以我提倡null检查。在IL代码中,扩展方法的发出方式不同。它们作为类的静态方法发出,因此参数可以为null。
UPDATE:抛出异常或适当地处理null值是我在扩展方法中处理null值的方式。