扩展方法是否应处理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);
}

扩展方法是否应处理null

您应该抛出一个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值的方式。