如何检查char数组元素是否为空?

时间:2013-07-21 12:49:07

标签: c# arrays char

我在C#中使用非常简单的数组:

char[] niz = new char[16];
niz[0] = 'c';
niz[1] = 's';
niz[2] = 'h';
niz[3] = 'a';
niz[4] = 'r';
niz[5] = 'p';

如何检查此数组的哪个元素为空?

我试过这段代码:

if (niz[6] == null) Console.WriteLine("6th is empty");

但在这种情况下,它不是空的,我不知道为什么。

请帮帮我吗?

5 个答案:

答案 0 :(得分:7)

您需要使用nullable类型。将此更改为

char?[] niz = new char?[16];

那么你的代码就可以了

if (!niz[6].HasValue) 
  Console.WriteLine("6th is empty");

答案 1 :(得分:5)

将使用数组元素类型的默认值初始化数组。 Char不是引用类型,因此null不是默认值。对于char,默认值为0

您可以检查array[i] == default(char),但这不会告诉您数组项是否为空,或者您是否已分配默认值:

char[] niz = new char[16];
niz[0] = 'c';
niz[1] = (char)0; // default value
niz[2] = '\0'; // default value
niz[3] = 'a';
niz[4] = 'r';
niz[5] = 'p';

for(int i = 0; i < niz.Length; i++)
    Console.WriteLine(niz[i] == default(char));

正如Ehsan建议的那样,你可以使用可空字符数组,但同样,你不会知道项目是否未初始化,或者你是否为其分配了null值。我建议你使用List<T>类而不是数组。它只包含您需要的项目(即没有默认的空项目)。

答案 2 :(得分:1)

因为你正在使用字符,所以你需要说:

if(niz [6] =='\ 0')Console.WriteLine(“6th为空”);

字符不能等于null。

答案 3 :(得分:0)

问题是char将使用默认值进行初始化。你需要让它像这样可以为空:

char?[] niz = new char?[16];

答案 4 :(得分:0)

 char[] niz = new char[16];
        niz[0] = 'c';
        niz[1] = 's';
        niz[2] = 'h';
        niz[3] = 'a';
        niz[4] = 'r';
        niz[5] = 'p';
        for (int i = 0; i < niz.Length; i++)
        {
            if (niz[i] == '\0') Console.WriteLine(i);
        }