2014-04-19 71 views
1

此代码有什么问题?我不断收到一个StackOverlflowException ..列表中的StackoverflowException

public class Places 
{ 
    public string Title { get; set; } 
    public string Content { get; set; } 
    public double Latitude { get; set; } 
    public double Longtitude { get; set; }  


    public List<Places> allPlaces = new List<Places> 
    { 
     new Places { Title = "test", Content = "test\ntest", Latitude = 52.23057, Longtitude = 5.84582 }, 
     new Places { Title = "testt", Content = "dfsdf", Longtitude = 52.35589, Latitude = 4.92119 } 
    }; 
} 
+1

实例化allPlaces时有一个递归。 allPlaces在创建allPlaces时创建。 – Silvermind

+0

感谢您的快速响应,但我不太明白。我该如何解决? – user3478148

回答

5

由于allPlaces是一个实例字段,它是建设Places对象的过程中初始化。因此,您创建了一个Places对象,该对象创建了一个List<Places>,该对象在其集合初始值设定项中创建另一个Places对象,该对象创建自己的另一个List<Places> ...永无止境的递归。

您可能想要创建一个静态allPlaces字段,该字段仅创建一个列表。将static关键字添加到该字段中,如下所示:

public static List<Places> allPlaces = ... 
+0

这不是一个选项,因为我想在另一个类中使用该列表。 – user3478148

+0

@ user3478148:请提供您要完成的内容的详细说明。如果您提供的信息太少,很难帮助您。否则,我们只能猜测,就像我在这里做的那样。 –

+0

我明白了,对不起。我试图在名为Places.cs的类中设置一个列表。然后,我尝试使用以下代码在另一个课程中收到此课程列表中的信息: 'Places places = new Places(); foreach(var place.allPlaces) { string test = place.Content; – user3478148

相关问题