构造函数中值的初始化

本文关键字:初始化 构造函数 | 更新日期: 2023-09-27 18:31:03

你能告诉我两者之间的区别吗?以下构造函数初始 化。。

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

"姓名,年龄,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 关键字,我们将初始化构造函数数据在创建对象之前...但是当我们尝试初始化数据之后时创建显示此行为的对象..

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

构造函数中值的初始化

您正在获得堆栈溢出,因为您位于名为 Person 的类的定义中,并且您正在尝试在其中创建同一类的更多对象。创建这些 Person 对象时,它们还会尝试创建更多 Person 对象,依此类推。

这种递归定义吹动了堆栈,因为它是无限的,永远不会结束。

尝试定义此代码块:

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

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

尝试使用

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