2014-06-20 38 views
0

這可能已經被問了很多次了,我一直在四處搜尋,但由於某種原因,這對我沒有意義。所以好像我創建一個新的實例,但Visual Studio中告訴我,Object reference not set to an instance of an object.c類的新實例#

public class Test{ 
    private Dictionary<string, Service> serviceList; 
    private void GetList(string ID){ 
     foreach(var service in Service.Load()){ 
      servicelist.Add(service.ID, new Service()); 
     } 
    } 
} 

我想,當我使用新的Service(),我基本上是創建服務的新實例,每一次我移動到字典中的下一個元素? 服務是一類

+1

是的,你這樣做。請考慮閱讀:http://msdn.microsoft.com/en-us/library/fa0ab757.aspx,http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx。 – BartoszKP

+0

好吧,爲服務中的每個服務創建一個新服務。加載並*添加到字典中。我不確定你的意思是「移到下一個元素」。那麼,你的問題到底是什麼?只是創建了一個新實例? – BradleyDotNET

+0

是啊我之前讀過,但不知道爲什麼我得到我上面發佈的錯誤。我忘了包括它 – Test

回答

2

你忘了實例你的列表中,您需要:

private Dictionary<string, Service> serviceList = new Dictionary<string, Service>(); 
    private void GetList(string ID){ 
    .... 

要回答你最初的問題:是的,是爲在c每個項目創建一個新的實例ollection被迭代。

0

是的。那就是你所做的。當你調用new Service()創建類的新實例,除非服務是一個單獨的類

+0

通常你不能在單例中調用構造函數,所以這種情況可能無法正常工作/編譯! – BradleyDotNET

1

你是剛剛宣佈詞典中,你需要初始化它

做到這一點

private Dictionary<string, Service> serviceList = new Dictionary<string, Service>();