2013-02-04 31 views
1

我試圖在字典中放置大廳系統。詞典 - 對象引用未設置爲對象的實例

private Dictionary<string, Dictionary<string, string>> lobbys; 

第一個字符串是大廳ID,字典中的字典在大廳中持有客戶端用戶名。

當我嘗試創建在字典中一個新的「大房間」,像這樣:

lobbys.Add("dSd244SfasdD", null); 

(以下簡稱「dSd244SfasdD」作爲獨特的大堂ID和null被空字典我還沒有創建(因爲這裏還沒有用戶))

我得到這個錯誤:「引用的對象沒有設置爲對象的實例。」

我不確定我做錯了什麼,而且我對C#相當陌生。請幫忙。謝謝:)

回答

5

您必須先初始化lobbys詞典(持有辭書):

lobbys = new Dictionary<string, Dictionary<string, string>>(); 

然後,您可以添加到這個lobbys,當你這樣做的話,你應該實例的內部字典。

lobbys.Add("dsD244SfasD", new Dictionary<string, string>()); 

然後,當您添加到這些內部字典:

lobbys["dsD244fasD"].Add("Client1", "Bob Jones"); 
lobbys["dsD244fasD"].Add("Client2", "Bill James"); 
3

您還沒有爲您的變量賦值,所以它的默認值爲null。 (不要忘記,lobbys的值不是一個對象 - 這是一個參考)。你既可以給它分配一個值在構造函數,或聲明:

private Dictionary<string, Dictionary<string, string>> lobbys 
    = new Dictionary<string, Dictionary<string, string>>(); 

(您可能想使其在同一時間一個readonly變量 - 這不會更改字典的內容阻止你,但是這將意味着該變量總是指相同字典。)

3

需要instantiate你的字典。

lobbys = new Dictionary<string, Dictionary<string, string>(); 

如果它在你的類中的字段,你可以在現場對其進行初始化,也可以在類的構造函數初始化。

1

在使用對象之前,您需要首先創建對象的實例。

private Dictionary<string, Dictionary<string, string>> lobbys = new Dictionary<string, Dictionary<string, string>>(); 
0
private Dictionary<string, Dictionary<string, string>> lobbys 
    = new Dictionary<string, Dictionary<string, string>>(); 
相關問題