C# 无循环检测空数组

C# 无循环检测空数组,c#,.net,c#-4.0,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;

如果没有循环,我如何才能发现数组是否为空?! 有什么方法或别的吗

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

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]);
        }
    }
}
或者像这样的一些代码:

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

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

数组只包含一些元素。不存在仅仅因为每个元素恰好包含默认值0、null或其他值而使数组为空的概念

如果您想要一个动态大小的集合,您应该使用类似列表的东西,而不是数组


如果要检测集合的任何元素(无论是列表、数组还是其他任何元素)是否为非默认值,则必须通过循环进行检测。您不必在源代码中循环,但在某个地方会涉及循环…

您可以使用LINQ来检查数组中是否有空元素,您只需执行以下操作:

var hasNulls = myArray.Any( a => a == null );
或者,如果要选择具有值的值:

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

除了循环外没有其他方法,即使LINQ也会自动执行循环。 相反,使用列表并检查listName=null&&listName.Length=0


希望有帮助:

请准确解释空数组的含义。您是指所有项都为空的数组吗?或者是一个没有任何项目的数组?我的意思是null,或者是一个未初始化的数组cell@MesutDarvishian:您需要了解,没有未初始化的单元格-具有空值的数组元素与具有非空值的数组元素一样初始化。它们都只是值。我的意思是,在名称[0]和名称[4]之间,名称[2]为空的情况下,如何检测此数组有一个空单元格?请注意,这里仍然有一个循环。只是循环在LINQ库中,而不是在应用程序代码中。此外,您还需要使用defaultT,以便代码可以用于值类型的数组,例如int[]。我的意思是,在名称[0]和名称[4]之间只有名称[2]为空的情况下,如何检测此数组有一个空单元格?@MesutDarvishian,您必须测试每个数组,直到遇到null、not null、all not null或all null。唯一的另一种方法是将数组隐藏在另一个对象中,并在指定子项时设置一些标志,但这必须是一种特殊情况,在这种情况下才会有回报。@MesutDarvishian:我会使用LINQ:int nullElements=array.Countx=>x==null;。