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);
@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会更好、更安全。