2012-10-17 74 views
-3

解決錯誤的最佳方法是什麼使用未分配變量?下面的代碼包含錯誤:使用未分配變量c#

string[] Names; 
Countries.Keys.CopyTo(Names, 0); 

這裏CountriesDictionary<string, string>類型。錯誤來自Names陣列。

+0

名稱不分配。嘗試字符串[]名稱=新字符串[5]; – scheien

+0

但是,如果鑰匙數超過5呢? – user1574860

+0

編譯器不夠智能.. –

回答

1

,最好使用default結構,如果可能的話,在一些一些變量的初始化是 intiial值:

例如

var x = default(int); 
你的情況

,它可以be

string[] s = default(string[]); 

編輯

考慮編輯問題,你必須攜帶正確 intializing ,爲引用類型default值將返回null,這在特定的情況下,會產生異常。

所以只是將其初始化喜歡:

string[] s= new string[Countries.Keys.Count]; 
+0

[這將拋出一個ArgumentNullException](http://msdn.microsoft.com/en-us/library/06x742cw.aspx)。 – Rawling

+0

當不使用泛型時,默認是不必要的。 'null'更簡潔,然後'default(string [])'。 – MrDosu

+0

@Rawling:**錯誤**。它取決於**是什麼** * Countries.Keys *和*如何實施。 – Tigran

4

您需要創建一個空數組中的值複製到:

string[] Names = new string[Countries.Keys.Count]; 
Countries.Keys.CopyTo(Names,0); 

如果你可以使用LINQ,你可以這樣做,因爲

string[] names = Countries.Keys.ToArray(); 
2

假設設定的國家是字典,例如:

string[] names = new string[countries.Count]; 

關於.NET編碼約定,局部變量以及私有類型成員的標題應該是駱駝名稱,因此,如果國家不是屬性,則應使用「名稱」而不是「名稱」和「國家/地區」 。

1

您必須初始化數組來解決這個問題:

string[] Names = new string[Countries.Keys.Count]; 
+0

'Countries.Keys.Count'? – Rawling