ArrayList.IndexOf在c#中返回-1

本文关键字:返回 IndexOf ArrayList | 更新日期: 2023-09-27 18:28:08

请让我感到困惑。我有一个184码的数组。我的名单中有25个

[1] =25

[2] =30等

我试图返回一个项目示例的索引。返回0,其中item为25,返回1,其中30。然而,我用过什么东西。当我使用时

int l = myArray.IndexOf(myItem) ;

它返回-1。我的项目是30。然后我用30 替换我的物品

int l = myArray.IndexOf(30) ;
int l = myArray.IndexOf("30") ;

两者都返回-1。然而,当我尝试时

int l = Convert.ToInt16( myArray[2]);

以上返回30。请问我哪里错了?这是我第一次遇到这种情况。我很困惑。我试过了。

int l = myArray.IndexOf("30", 1) ;
int l = myArray.IndexOf(30 ,1) ;

然而,没有任何帮助。

更新

谢谢大家抽出时间。

我不得不按照下面用户的建议使用列表。再次感谢你,伙计。如果你写下你的答案,我会接受的,也许这会对某个人有所帮助。我修改我的代码如下。它现在可以工作了,但我不确定ListArray失败的原因。

   List<long> li = new List<long>();
      foreach (long item in arlClientID)
          li.Add(item);
      int h = li.IndexOf(searchDuplicate.clientid);

ArrayList.IndexOf在c#中返回-1

@Blorgbeard建议您使用List而不是ArrayList的原因是ArrayList是非泛型集合,因此当您将项添加到ArrayList时,它接受object而不是int''string等。更多信息请点击此处。

我怀疑您得到-1作为输出的原因可能不是"myArray"中的整数,而是如下所述的字符串:-

            ArrayList myArray = new ArrayList();
            myArray.Add(25);
            myArray.Add(50);
            myArray.Add("30");
            Console.WriteLine(myArray.IndexOf(30)); // Returns  -1
            Console.WriteLine(myArray.IndexOf("30")); // Returns  2

因此,使用泛型List集合而不是ArrayList会更好、更安全。