请我很困惑。我有一个大小为184的Arraylist。我的名单中有25个
[1] = 25
[2] = 30等。
我正在尝试返回项目示例的索引。返回0,其中item为25,返回1,其中30.但是,我使用的是什么项目。我用的时候
int l = myArray.IndexOf(myItem) ;
返回-1。我的项目是30.然后我用30替换myitem
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);
答案 0 :(得分:2)
@Blorgbeard建议您使用List而不是ArrayList的原因是因为Arraylist是非泛型集合,因此当您向arraylist添加项时它接受object而不是int \ string等。更多信息{{ 3}}
我怀疑你得到-1的原因是输出大概是30并不是&#34; myArray&#34;但是如下所述的字符串: -
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会更好,更安全。