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 に答える