簡體   English   中英

聲明了數組大小,但仍然出現錯誤:索引超出范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM