这可能已被多次询问,我一直在寻找,但由于某种原因,这对我来说没有意义。所以我似乎创建了一个新实例,但Visual studio告诉我Object reference not set to an instance of an object.
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()时,我基本上每次移动到Dictionary中的下一个元素时都会创建一个新的Service实例? 服务是一个类
答案 0 :(得分:2)
您忘记实例化您的列表,您需要:
private Dictionary<string, Service> serviceList = new Dictionary<string, Service>();
private void GetList(string ID){
....
回答您的初步问题:是的,为正在迭代的集合中的每个项目创建一个新实例。
答案 1 :(得分:1)
您只是声明了初始化它所需的词典
这样做
private Dictionary<string, Service> serviceList = new Dictionary<string, Service>();
答案 2 :(得分:0)
是。你正是这样做的。当您调用new Service ()
时,您将创建该类的新实例,除非Service是单例类