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;


}

这是添加功能:

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

只要您不添加至少一个,您的 Items 就为空。

于 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 回答
0

Items需要初始化,例如在构造函数中。例如 Items = new int[10]

于 2013-04-07T22:04:41.867 回答
0
public bool Search(int item)
{
    return Array.IndexOf(Items, item) > 0 ? true : false;
}

也许这会奏效。

于 2013-04-07T22:38:34.763 回答