C# Wrapping List.Add()使-Object引用未设置为对象的实例
我想用我的自定义类包装C# Wrapping List.Add()使-Object引用未设置为对象的实例,c#,runtime-error,nullreferenceexception,C#,Runtime Error,Nullreferenceexception,我想用我的自定义类包装列表类。至于现在我有这样的东西, public class PriorityListOfNodes { private List<Node> list_; private IComparer<Node> sorter_; public List<Node> List_ { get {return list_;} set {list_ =
列表
类。至于现在我有这样的东西,
public class PriorityListOfNodes
{
private List<Node> list_;
private IComparer<Node> sorter_;
public List<Node> List_ {
get {return list_;}
set {list_ = value;}
}
public PriorityListOfNodes ()
{
sorter_ = new NodeSorter_fValueDescending ();
}
public Node PopFromEnd ()
{
Node temp = new Node (list_ [list_.Count - 1]);
list_.RemoveAt (list_.Count - 1);
return temp;
}
public Node PeekFromEnd ()
{
return list_ [list_.Count - 1];
}
public void Add (ref Node toAdd)
{
Debug.Log (toAdd);
list_.Add (toAdd);
list_.Sort (sorter_);
}
}
我得到运行时异常:
对象引用未设置为对象的实例
我也尝试过不使用
ref
,但结果相同。我做错了什么?您从未实际实例化列表
public PriorityListOfNodes()
{
分拣机=新节点分拣机();
列表=新列表();
}
默认情况下,类有空的无参数构造函数,因此实际上您有:
public class PriorityListOfNodes
{
private List<Node> list_;
// ...
public PriorityListOfNodes()
{
}
// ...
}
请参阅。非常奇怪的命名方式。。通常私有字段有下划线前缀,或者没有下划线前缀prefix@lazyberezovsky我以前使用前缀,但它需要更长的时间来写(你完成字自动完成)。
public PriorityListOfNodes ()
{
sorter_ = new NodeSorter_fValueDescending ();
list_ = new List<Node>();
}
public class PriorityListOfNodes
{
private List<Node> list_;
// ...
public PriorityListOfNodes()
{
}
// ...
}
public class PriorityListOfNodes
{
private List<Node> list_;
// ...
public PriorityListOfNodes()
{
this.list_ = new List<Node>();
// ...
}
// ...
}