我有两个列表(相同长度),存储了大约10个整数。
我通过for循环运行它们,同时根据if
语句检查它们。我知道这个列表包含1个值,该值对if
- 语句的回答是真的。
实际上,我的第一个Debug显示了正确的值(对应于列表中值的位置,即8)。
我的第二个调试显示了这个地方的相应值,即71。
但是,当我尝试将列表的值(即71)赋给数组DefMarkerX[count]
的第一个点时,我收到以下错误。
IndexOutOfRangeException
:数组索引超出范围。
我真的不知道问题是什么,因为我已经在早期声明了数组的大小。
我的代码是:
public static int Markers = 1;
public static int[] DefMarkerX = new int[Markers];
public static int[] DefMarkerY = new int[Markers];
// ....................................................
int count = 0;
for (int i = 0; i < MarkerPosX.Count; i++)
{
if (MarkerPosX[i] > 10 && MarkerPosX[i] < 246 && MarkerPosY[i] > 10 && MarkerPosY[i] < 246)
{
Debug.Log("i: " + i)
Debug.Log("markerposx: " + MarkerPosX[i]);
DefMarkerX[count] = MarkerPosX[i];
显示的最后一行是我收到错误的地方。 在此先感谢您的帮助!
答案 0 :(得分:1)
不确定您的意图,但如果您事先无法知道DefMarkerX
的大小,则可以使用List<int>
public static List<int> DefMarkerX = new List<int>;
for (int i = 0; i < MarkerPosX.Count; i++)
{
if (MarkerPosX[i] > 10 && MarkerPosX[i] < 246 && MarkerPosY[i] > 10 && MarkerPosY[i] < 246)
{
DefMarkerX.Add(MarkerPosX[i]);
}
}
如果您想保留MarkerPosX
的索引,可以使用List<KeyValuePair<int, int>>
public static List<KeyValuePair<int, int>> DefMarkerX = new List<KeyValuePair<int, int>>;
for (int i = 0; i < MarkerPosX.Count; i++)
{
if (MarkerPosX[i] > 10 && MarkerPosX[i] < 246 && MarkerPosY[i] > 10 && MarkerPosY[i] < 246)
{
DefMarkerX.Add(new KeyValuePair(i, MarkerPosX[i]));
}
}