1

配列に特定の要素が存在するかどうかを確認しようとしています。配列に要素を追加する関数と、要素が存在する場合に true を返す検索関数があります。オブジェクト参照がオブジェクト エラーのインスタンスに設定されていません。

私はフィールドを持っています:

int [] Items;

これが検索機能です。

public bool Search(int item)
{

    bool isInArray = false;
    for (int i = 0; i < Items.Length; i++) // ERROR HERE
    {
        if (Items[i] == item)
        {
            isInArray = true;
            break;
        }

    }
    return isInArray;


}

これは add 関数です:

public void Add(int item)
{

    if (Items == null)
    {
        Items = new int[1];
    }
    else
    {
        Array.Resize<int>(ref Items, Items.Length + 1);
    }
    Items[Items.Length - 1] = item;
}
4

5 に答える 5

1

少なくとも 1 つ追加しない限り、アイテムは null です。

于 2013-04-07T21:59:09.343 に答える
0

変化する

for (int i = 0; i < Items.Length; i++)

for (int i = 0; i < (Items?? (Items = new int[0])).Length; i++) 
于 2013-04-07T22:02:50.187 に答える
0

ループを実行する前に null を確認します。

public bool Search(int item)
{
    bool isInArray = false;
    if (Items != null)
    {
        for (int i = 0; i < Items.Length; i++) // ERROR HERE
        {
            if (Items[i] == item)
            {
                isInArray = true;
                break;
            }
        }
    }
    return isInArray;
}
于 2013-04-07T22:03:20.330 に答える