[英]Array size is declared, but still get error: index is out of range
我有兩個列表(相同長度),其中存儲了大約10個整數。 我通過一個for循環運行它們,以根據if
語句同時檢查它們。 我知道此列表包含1個對if
-statement回答為true的值。 確實,我的第一個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];
顯示的最后一行是我得到錯誤的地方。 在此先感謝您的幫助!
不確定要做什么,但是如果您事先不知道DefMarkerX
的大小, 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]));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.