我創建了一個處理c#中圖像的程序。出於某種原因,我已經做了幾乎最簡單的雙循環可能,它拒絕工作。該循環每次都可靠地結束於x = 78和y = 78。我一直在看這個,我無法弄清楚!代碼:For循環過早結束
try
{
for (int y = 0; y < inputHeight; y++)
{
for (int x = 0; x < inputWidth; x++)
{
if (x == 0 && y == 0)
continue;
int xpix = x;
int ypix = y;
Color color = inputImage.GetPixel(xpix, ypix);
colorBucket[counter] = color.R;
if (counter < byteSize - 1)
colorBucket[counter + 1] = color.G;
if (counter < byteSize - 2)
colorBucket[counter + 2] = color.B;
counter += 3;
}
}
}
catch (Exception e)
{
System.Diagnostics.Debugger.Log(1, "Error", e.ToString());
}
Visual Studio中明確告訴我這兩個條件都滿足,不管事實,即退出循環,和循環時,他們也是如此。 colorBucket的大小非常龐大,當count通過它本身大約是colorBucket大小的三分之一時,循環就會退出。除此之外,不會拋出任何異常,並且我在catch語句中設置的調試點永遠不會被調用。
編輯:圖像的寬度和高度是844像素,而且,一旦內部代碼被刪除,循環仍然顯示失敗。編輯2:所以我已經想出了一些非常重要的事情,循環實際上並不提前結束,但不知何故,計數器並不等於colorbucket中的顏色數。
您可能在循環中發生異常。將循環包裝在「try/catch」塊中,看看會發生什麼。 – Dai
使用斷點並檢查inputHeight和inputWidth變量,當它碰到你的第一個for循環時。這將告訴你,如果循環過早結束或設置爲78x78,如@dasblinkenlight所述 – BRogers
當循環後面放置斷點時,for循環中的兩個條件都爲真。 inputHeight不是78,也不是輸入寬度,我通過循環近似地執行了20次。另外,視覺工作室告訴我,儘管我們已經離開了循環,條件仍然是正確的。 –