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

时间:2015-06-22 20:03:29

标签: c# arrays int

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

if (grades[i] != null)

我收到一条错误消息,指出int对象永远不会为“null”,因此该表达式始终返回“true”。 如果不是“null”,我该如何检查数组中的特定对象是否为空?

Thanx帮了很多忙!

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

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

if (grades[i] != 0)

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

int

然后你可以检查单个项目中的空值。

int?[] grades

答案 2 :(得分:4)

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

你可以这样使用它

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

然后要检索该值,它不像传统的int那样有效。

int gradeValue = grades[i].Value;

答案 3 :(得分:1)

根据实现,

int应该可以为空。

Nullabele int数组是可以使用此

创建的
int?[] grades = new int?[5];

您可以使用

检查是否有值
grades[i].HasValue

答案 4 :(得分:0)

我会考虑制作验证员课程。上面的代码也应该在可空类型上工作。

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);