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

还有什么可以在不循环的情况下检测空数组吗?

4

3 回答 3

5

一个数组只包含一些元素。没有一个数组是“空”的概念,只是因为每个元素恰好包含默认值(0、null 或其他)。

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

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

于 2012-12-28T12:40:36.660 回答
2

除了循环之外别无他法,即使 LINQ 也会自动循环。相反,使用 list<> 并检查是否 (listName!=null && listName.Length!=0)

希望能帮助到你 :)

于 2012-12-28T12:47:46.557 回答
0

您可以使用 LINQ 来检查数组中是否有任何元素为空,您可以这样做:

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

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

var notNulls = myArray.Where( a => a != null );
于 2012-12-28T12:40:44.823 回答