在C#中,如何在可能为空的实例上调用方法?

elb*_*aid -5 c#

我想知道,IsNullOrEmpty()在List实例(不是在.NET Framework中)上使用假设方法,如果实例实际上是null,它将抛出一个Object引用,而不是设置为对象异常的实例,或类似的东西.考虑到这一点,是否可以在null实例上调用方法?

Llo*_*oyd 12

没有IsNullOrEmpty()一个List只有一个String.在latter的情况下,它是一个静态方法,所以不需要实例,你传入一个字符串引用来检查它,它可以在那里检查null.


Joe*_*Joe 6

扩展方法可以采用null"this"参数.我不知道框架中的List的任何方法IsNullOrEmpty,但想象它将实现如下:

public bool IsNullOrEmpty<T>(this IList<T> list)
{
    if (list == null) return true;
    return list.Count == 0;
}
Run Code Online (Sandbox Code Playgroud)

您可以在空引用上调用此(或任何其他)扩展方法,而不会出现任何问题:

List<int> nullList = null;
if (nullList.IsNullOrEmpty())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)