0

你能告诉我..以下构造函数初始化之间的区别..

这里的人是一个类..我正在尝试初始化一些值......并且我创建了三个名为

“姓名、年龄、CanCode”

并调用其中之一..

//Without Static

public Class Person
{

   Person[] people = {
             new Person { Name="Allen Frances", Age=11, CanCode=false },
             new Person { Name="Burke Madison", Age=50, CanCode=true }
   }

   // with Static...    
   /*
   static   Person[] people =
   {
             new Person { Name="Allen Frances", Age=11, CanCode=false },
             new Person { Name="Burke Madison", Age=50, CanCode=true }
   }
   */
   ........... 
}  

当我尝试初始化没有static关键字的类构造函数时..它显示“堆栈溢出异常”。

当我调试代码时,在为 Person 类创建对象后,初始化发生的时间更长,我不知道为什么?

我所知道的是,如果您使用static关键字那些我们在创建对象之前初始化构造函数数据......但是在这里,当我们尝试在创建对象后初始化数据时,它会显示这种行为......

你能告诉我为什么吗...

4

2 回答 2

4

你得到一个堆栈溢出,因为你在一个名为 Person 的类的定义中,并且你试图在其中创建同一个类的更多对象。当这些 Person 对象被创建时,它们也会尝试创建更多的 Person 对象,依此类推。

这个递归定义破坏了堆栈,因为它是无限的并且永远不会结束。

尝试定义这个代码块:

Person[] people = {
                 new Person { Name="Allen Frances", Age=11, CanCode=false },
                  new Person { Name="Burke Madison", Age=50, CanCode=true }
                    }

在代码的不同部分,也许是主要方法?

于 2012-04-13T06:13:13.753 回答
0

尝试

Person[] people = new Person[2] {
                 new Person { Name="Allen Frances", Age=11, CanCode=false },
                  new Person { Name="Burke Madison", Age=50, CanCode=true }
                    };
于 2012-04-13T14:32:15.263 回答