如何在C#中检查int数组对象是否为空

本文关键字:对象 数组 是否 int 检查 | 更新日期: 2023-09-27 17:57:31

我有一个int等级数组[5]。我有一个循环,它逐个检查数组中的对象,看看它们是否为空。我用过:

if (grades[i] != null)

我得到一条错误消息,int对象从不为"null",因此该表达式总是返回"true"如果不是"null",如何检查数组中的特定对象是否为空?

谢谢你的帮助!

如何在C#中检查int数组对象是否为空

我认为你应该像这样检查0的默认值。

if (grades[i] != 0)

但是,如果0在您的用例中是一个有效值,并且您希望存储null(即未设置等级),那么您应该将数组声明为类型为null的int。像这样。

int?[] grades

然后你可以检查单个项目中的空值,比如

if (grades[i].HasValue )
{  
    // mean grades[i] is not null and has some int value inside it
}

int不是可为null的类型。如果您希望能够检查一个空的int,则必须使用一个可为null的int:int?

int是一个不可为null的类型,它的默认值不是null,而是0。如果你想要一个允许null的int数组,你可以使用一个可以为null的int。int?

你可以这样使用

int?[] grades = new int?[5];
if (grades[i].HasValue) //The way to check for != null

然后为了检索值,它不像传统的int那样工作。

int gradeValue = grades[i].Value;

int应该可以为null。

Nullableint数组是可以使用这个创建的

int?[] grades = new int?[5];

您可以使用检查是否有值

grades[i].HasValue

我会考虑制作一个验证器类。上面的代码也应该适用于可为null的类型。

public class ArrayObjectValidator<T>
{
public ArrayObjectValidator(T[] array)
{
    this.array = array;
}
private T[] array { get; set; }
public bool ValidateIndex(int index)
{
    bool result = false;
    if (array != null && array.Length > 0)
    {
        result = CheckItemAt(index);
    }
    return result;
}
private bool CheckItemAt(int index)
{
    return index >= 0 && index < array.Length && NullControl(index);
}
private bool NullControl(int index)
{
    return array[index] != null && array[index] is T;
}
}

您可以按以下方式使用它;

int[] integerArray = new int[10]={1,2,3,4,5,6,7,8,9,0};
ArrayObjectValidator<int> intArrayObjValidator = new ArrayObjectValidator<int>(integerArray);
bool isItemAtIndexFiveNullOrEmpty = integerArray.ValidateIndex(5);