C#在数组中查找匹配项

C#在数组中查找匹配项,c#,C#,我想看看我的数组中是否存在某个元素。 我有一个向数组中添加元素的函数,还有一个搜索函数,如果元素存在,则返回true。我一直在获取未设置为对象错误实例的对象引用 我有一个领域: int [] Items; 这是搜索功能: public bool Search(int item) { bool isInArray = false; for (int i = 0; i < Items.Length; i++) // ERROR HERE { if (

我想看看我的数组中是否存在某个元素。 我有一个向数组中添加元素的函数,还有一个搜索函数,如果元素存在,则返回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;


}
公共布尔搜索(int项)
{
bool-isInArray=false;
for(inti=0;i
这是添加功能:

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;
}
public void Add(int项)
{
if(Items==null)
{
项目=新整数[1];
}
其他的
{
Array.Resize(ref Items,Items.Length+1);
}
项目[项目长度-1]=项目;
}

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

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

更改

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

for(int i=0;i<(Items???(Items=new int[0]))。长度;i++)
更改

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

for(int i=0;i<(Items???(Items=new int[0]))。长度;i++)

在执行循环之前检查空值:

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;
}
公共布尔搜索(int项)
{
bool-isInArray=false;
如果(项!=null)
{
for(inti=0;i
在执行循环之前检查空值:

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;
}
公共布尔搜索(int项)
{
bool-isInArray=false;
如果(项!=null)
{
for(inti=0;i
项目需要初始化,例如在构造函数中。例如,Items=newint[10]

需要初始化Items
,例如在构造函数中。例如,项目=新整数[10]

public bool Search(int item)
{
    return Array.IndexOf(Items, item) > 0 ? true : false;
}
也许这样行



也许这会起作用。

错误发生在哪里?错误发生在哪里?你的数组初始化了吗?只有一个地方可能发生。什么是项目?你在哪里设置它的值?为什么你不想使用
List
,它会给你想要的东西
Add
IndexOf
而不是
Search
@ashburaczenko项目数组通过Add函数从用户输入获取其值。检查链接错误发生在哪里?错误发生在哪里?你的数组初始化了吗?只有一个地方可能发生。什么是项目?你在哪里设置它的值?为什么你不想使用
List
,它会给你想要的东西
Add
IndexOf
而不是
Search
@ashburaczenko项目数组通过Add函数从用户输入获取其值。检查link我在我的表单中在contain函数之前调用add函数,所以它应该为null,对吗?好吧,在数组初始化为null以外的行和循环中设置一个断点,看看条目是否为null。我在我的表单中在contain函数之前调用add函数,所以它应该为null,对吗,将断点设置到将数组初始化为非null的行和循环,并查看项是否为null。这将终止逻辑,因为如果有人在添加之前尝试搜索,则项的第一个元素将为0.ahhh,是,则代码应为项创建零长度数组,而不是单个元素数组。我编辑了我的答案以反映这一点。这将扼杀逻辑,因为如果有人在添加之前尝试搜索-Items的第一个元素将为0.ahhh,是的,那么代码应该为Items创建零长度数组,而不是单个元素数组。我编辑了我的答案以反映这一点。谢谢,但是数组的大小应该与元素总数相同。谢谢,但是数组的大小应该与元素总数相同。