扩展方法应该处理null吗?

dec*_*uet 0 c# extension-methods

这是不好的做法(回归null部分)吗?

public static ObservableCollection<TSource> ToObservableCollection<TSource>(
    this IEnumerable<TSource> source)
{
    if (source == null) return null;
    return new ObservableCollection<TSource>(source);
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*llo 7

你应该扔一个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);
}
Run Code Online (Sandbox Code Playgroud)

  • 这可能比让异常更深入更好,因为这样他们获得了正确的参数名称,并且不必怀疑他们无法访问的类中是否存在其他错误.这种事情越早越好. (2认同)