构造函数中值的初始化
本文关键字:初始化 构造函数 | 更新日期: 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 }
};