很抱歉,如果这是一个有点愚蠢的问题,但我认为我误解了有关Lists和Goggling的基本信息并没有帮助。这就是我所拥有的:
包含List元素的类:
public string Name { get; set; }
public int Age { get; set; }
public List<int> Main_Spec { get; set; }
public List<int> Aux_Spec { get; set; }
public Department()
{
List<int> Main_Spec = new List<int>();
List<int> Aux_Spec = new List<int>();
}
然后我尝试将元素添加到Main_Spec,如下所示:
Department departnment = new Department();
List<int> inter = new List<int>();
var parts2 = parts[2].Split(',');
foreach (string part in parts2)
{
inter.Add(int.Parse(part));
}
departnment.Main_Spec = inter;
inter.Clear();
我使用中间列表,因为当我尝试直接添加到department.Main_Spec时,我得到一个错误,说明该对象未实例化(或沿着这些行的某些内容)。我的问题是在调试模式下查看它,当我清除inter时,department.Main_Spec也会被清除。这不是我想要实现的目标,我不明白为什么会这样做。
提前谢谢!
答案 0 :(得分:5)
你的构造函数中只有一个小错误。您应该定义类的本地属性,而不是尝试声明和定义新的属性(构造函数的本地属性):
public Department()
{
this.Main_Spec = new List<int>();
this.Aux_Spec = new List<int>();
}
现在您可以回到不使用中间类的原始方式。例如:
Department departnment = new Department();
department.Main_Spec.AddRange(parts[2].Split(',').Select(p => int.Parse(p));
在这里,我也避免使用带有AddRange()
的for循环。
答案 1 :(得分:3)
将构造函数更改为:
public Department()
{
Main_Spec = new List<int>();
Aux_Spec = new List<int>();
}
您使用的是本地(函数级别)变量,而不是引用类级变量。