检测空数组而不循环

时间:2012-12-28 12:35:59

标签: c# .net c#-4.0

如何在不循环的情况下找出数组是否为空?!
有什么方法或其他吗?

我的意思是,在某些代码中这样:

string[] names = new string[5];
names[0] = "Scott";
names[1] = "jack";
names[2] = null;
names[3] = "Jones";
names[4] = "Mesut";

// or

int[] nums = new int[4];
nums[0] = 1;
// nums[1] = 2;
nums[2] = 3;
nums[3] = 4;

或类似的代码:

using System;
class Example
{
    static void Main()
    {
        int size = 10;
        int counter;
        string[] str = new string[size];

        for (counter = 0; counter < size; counter++)
        {
            str[counter] = "A" + counter;
        }

        str[3] = null;

        if (counter == size)
            Console.WriteLine("Our array is full!");
        if(counter < size)
            Console.WriteLine("Our array is not full");

        for (int i = 0; i < size; i++)
        {
            Console.WriteLine(str[i]);
        }
    }
}

还有什么其他方法可以检测空数组而不进行循环?

3 个答案:

答案 0 :(得分:5)

数组只包含许多元素。由于每个元素恰好包含默认值(0,null或其他),因此没有数组“空”的概念。

如果你想要一个动态大小的集合,你应该使用类似List<T>而不是数组的东西。

如果要检测集合中的任何元素(无论是列表,数组还是其他任何元素)是否为非默认值, 通过循环执行此操作。 (您不必在源代码中循环,但在某处会涉及循环...)

答案 1 :(得分:2)

没有其他方法可以循环,甚至LINQ也会自动循环。 而是使用列表&lt;&gt;并检查 if(listName!= null&amp;&amp; listName.Length!= 0)

希望有所帮助:)

答案 2 :(得分:0)

您可以使用LINQ来检查您可以执行的数组中是否有任何元素为空:

var hasNulls = myArray.Any( a => a == null );

或者,如果您想选择具有值的那些:

var notNulls = myArray.Where( a => a != null );