List 初始化触发“由于StackOverflowException,进程终止”

我有类似下面的结构,当我进行初始化时:

ArrayList nodesMatrix = null; List vertexMatrix = null; List odwiedzone = null; List priorityQueue = null; vertexMatrix = new List(nodesNr + 1); nodesMatrix = new ArrayList(nodesNr + 1); odwiedzone = new List(nodesNr + 1); priorityQueue = new List(); arr.NodesMatrix = nodesMatrix; arr.VertexMatrix = vertexMatrix; arr.Odwiedzone = odwiedzone; arr.PriorityQueue = priorityQueue; //only here i have exception 

debuger fires 由于StackOverflowException导致进程终止 :/有些想法为什么这个集合会触发此exception?

 private struct arrays { ArrayList nodesMatrix; public ArrayList NodesMatrix { get { return nodesMatrix; } set { nodesMatrix = value; } } List vertexMatrix; public List VertexMatrix { get { return vertexMatrix; } set { vertexMatrix = value; } } List odwiedzone; public List Odwiedzone { get { return odwiedzone; } set { odwiedzone = value; } } public List PriorityQueue { get { return PriorityQueue; } set { PriorityQueue = value; } } } public struct element : IComparable { public double priority { get { return priority; } set { priority = value; } } public int node { get { return node; } set { node = value; } } public element(double _prio, int _node) { priority = _prio; node = _node; } #region IComparable Members public int CompareTo(object obj) { element elem = (element)obj; return priority.CompareTo(elem.priority); } #endregion 

您的PriorityQueue属性正在引用自身。
您需要更改访问者以使用字段。

 List priorityQueue; public List PriorityQueue { get { return priorityQueue; } set { priorityQueue = value; } } 

但是,您应该使用自动实现的属性:

 public List PriorityQueue { get; set; } 

您的属性设置器是递归的。

  public List PriorityQueue { get { return PriorityQueue; } set { PriorityQueue = value; } } 

将此更改为:

  public List PriorityQueue { get { return priorityQueue; } set { priorityQueue = value; } }