2012-09-24 68 views
0

我在下面的代碼中獲得Invalid Operation Error無效操作錯誤

int m = l_score.Min(); 

其中l_scoreint名單。 爲什麼會發生這種情況?

編輯:代碼

List<int> l_origin = new List<int>(); 
List<int> l_k = new List<int>(); 
List<int> l_score = new List<int>(); 



for (int i = 0; i < 9; i++) 
     { 
      if (box_matrix[i, 5] == 0 | box_matrix[i, 5] == 1 | box_matrix[i, 5] == 2) 
      { 

       for (int k = 1; k < 5; k++) 
       { 

        if (box_matrix[i, k] == 0) 
        { 
         int scr = 9; 
         l_origin.Add(box_matrix[i, 0]); 
         l_k.Add(k); 
         scr = score_the_move(box_matrix[i,0],k); 
         l_score.Add(scr); 

        } 
       } 
      } 
     } 


     //find the best move 
     int m = l_score.Min(); 
     int min_index = l_score.IndexOf(m); 
     machine_line(l_origin[min_index], l_k[min_index]); 
     l_origin.Clear(); 
     l_k.Clear(); 
     l_score.Clear(); 
+2

導入System.Linq的。 – adatapost

+0

你能展示你如何聲明l_score嗎? – prashanth

+0

添加了代碼詳細信息 –

回答

2

我猜l_score是空的,這就是爲什麼你得到這個例外。查看異常的消息以獲取更多詳細信息。

+0

我檢查過,你的答案是'l_score'是空的。但爲什麼它沒有得到填充? –

+0

因爲您添加項目的代碼永遠不會被調用。可能是您的if語句或只是邊緣情況下的邏輯錯誤。 –

2

您需要導入System.Linq的:

using Sytem.Linq; 

,然後你的行會的工作:

int m = l_score.Min(); 

我敢打賭,你看到此錯誤:InvalidOperationException (Sequence contains no elements)。它在列表爲empty時發生。

+0

這裏'n'什麼 –

+2

.Min()應該在列表 prashanth

+0

同意,'Min()'就足夠了。我編輯過,以增加它不起作用的真正原因; 'import System.Linq'丟失。 –

1

當列表內容中沒有元素時,拋出無效操作異常,如果調用.Min()方法。

發現這個當反的IEnumerable:

<exception cref="T:System.InvalidOperationException"><paramref name="source"/> contains no elements.</exception> 
+0

我檢查過了,你的答案是'l_score'是空的。但爲什麼它沒有得到填充? –

+0

@JohnWatson調試你的代碼,也許不符合你的條件是否滿足? – lahsrah

+0

使用||而不是| – prashanth

相關問題