我正在创建一个统一的基本程序,我检查列表数组索引根据值执行某个操作,然后我增加索引。我遇到的问题是数组总是存储在索引0并始终等于-1。
public class numGen(){
int val;
int i = 0;
System.Random rnd = new System.Random();
val = rnd.Next(1, 5);
arrayList.Add(val);
Debug.Log("val"+val);
Debug.Log("array"+arrayList.IndexOf(i));
if (arrayList.IndexOf(i) == 1)
{
Debug.Log("action1");
i++;
}
else if (arrayList.IndexOf(i) == 2)
{
Debug.Log("action2");
i++;
}
//and so on
}
我在日志中使用了debug,因此val将输出一个预期值,例如2,当我检查索引中存储的值为-1时,会添加到数组中。
不确定int值的变化方式或原因。
答案 0 :(得分:4)
这里的问题是误解了ArrayList
和IndexOf()
的工作原理。
搜索指定的对象和返回ArrayList中元素范围内第一次出现的从零开始的索引,该元素从指定索引开始并包含指定数量的元素。
所以你的例外来自:
ArrayList中元素范围内第一次出现的值的从零开始的索引,该值从startIndex开始并包含元素的计数数(如果找到);否则,-1。
我认为你正在寻找这样的事情:
获取或设置指定索引处的元素。
也可以
此属性提供了使用以下语法访问集合中特定元素的功能:myCollection [index] 。
您案例中的一个例子:
if (arrayList[i] == 1)
{
// if true..
}
答案 1 :(得分:2)
arrayList.IndexOf(i)
给出i
的值的任何元素的索引。如果您想要索引 i
的值,则必须改为使用arrayList[I]
。
答案 2 :(得分:1)
IndexOf给出您给出的值的索引。如果在数组中找不到相等的值,则返回-1
ArrayList arr = new ArrayList();
arr.Add(5);
arr.Add(2);
var isMinusOne = arr.IndexOf(0); //Is -1
var isZero = arr.IndexOf(5); //Is 0