2016-10-27 32 views
-7

我得到兩個錯誤「無法分配給'C',因爲它是'foreach迭代變量'和'語法錯誤,值預期'我真的不知道我的錯誤在哪裏?我可以用一些新鮮的眼睛來證明我的不足。我找不到我的錯誤

int[] numDictionary = new int[] { 5, 5, 5, 7, 7, 7, 9, 7, 9, 9, 9, 1 }; 

IDictionary<int, int> count = new SortedDictionary<int, int>();  
//count = new SortedDictionary<int, int>(); 
//int SortedDictionary = count; 

foreach (var c in numDictionary) 
{ 
    if (c > 0) 
    { 
     count[c] = count.[c] + 1; 
    } 

} 
//return count.ToString(); 
Console.WriteLine(count); 
Console.ReadKey(); 
+1

'count'是一本字典。 'c'是一個int。無法將'count'分配給'c'。另外,正如錯誤所述,它是一個循環變量。你不能改變它:這是循環的工作。 –

+1

而你正在創造'count'兩次。 'count [c] = c [] + 1'應該做什麼?也許你應該閱讀一些教程。瞭解類型,數組等。 –

+0

從您的說明或您發佈的代碼中,您不太清楚您希望做什麼。 – Drefetr

回答

0

foreach循環,你不要被索引訪問集合的內容。您可以使用您定義的迭代變量直接訪問收集項目(在本例中爲var c)。

Console.WriteLine("Contents of numDictionary: "); 
foreach (var c in numDictionary) 
{ 
    Console.Write(c); 
} 

但是,迭代變量不能被修改 - 它只能被讀取。如果要遍歷數組並修改其內容,請使用for循環。

int[] numDictionary = new int[] { 5, 5, 5, 7, 7, 7, 9, 7, 9, 9, 9, 1 }; 

for (int i = 0; i < numDictionary.Length; ++i) 
{ 
    numDictionary[i] = numDictionary[i] + 1; 
} 

你可以找到更多關於foreach聲明,以及它如何涉及for聲明this Microsoft Development Network article