此代码可能会引发空指针异常。
if (myArray[0] != null)
{
//Do Something
}
我如何测试以确保有一个元素 @index 0
?数组为空时不抛出异常。
根据您需要检查的内容,这些条件的某些组合:
if (myArray != null && myArray.Length > 0 && myArray[0] != null)
{
//Do Something
}
我将对蒂姆的回答做出的一个小改动是:
if (myArray != null && myArray.Any() && myArray[0] != null)
{
//Do Something
}
.Any 检查是否至少有 1 个,而无需遍历整个集合。此外,此版本适用于任何 IList<T>-实现器。
我知道在未来的 .NET 版本中可能会有 .IsNullOrEmpty 的 LINQ/IEnumerable 版本,这在这里非常方便。哎呀,您可以自己将其实现为扩展方法!
public static class MyExtensions
{
public static bool IsNullOrEmpty<T>(this IEnumerable<T> source)
{
return (source == null || !source.Any());
}
}
然后你的测试变成
if (!myArray.IsNullOrEmpty() && myArray[0] != null)
{
// ...
}
首先,您需要检查myArray是否为空。如果不是,请检查它的元素计数:
if (myArray != null && myArray.Length > 0)
{
// myArray has at least one element
}
如果第一个条件为假,则不会检查第二个条件,因此当myArray为 null 时不会抛出异常。