请告诉我以下构造函数之间的区别 初始化..
这里的人是一个类......我试图初始化一些值...... 我创建了三个名为
的属性"名称,年龄,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
关键字的类构造函数时..
它显示" Stack overFlow Exception。"
当我调试代码时,这里在为Person类创建对象之后 初始化发生的时间更多,我不知道为什么?
我所知道的是,如果你使用static
关键字那些我们初始化构造函数数据
在创建对象之前......但是在我们尝试初始化数据之后
创建显示此行为的对象..
你能告诉我为什么......
答案 0 :(得分:4)
您正在获得堆栈溢出,因为您位于名为Person的类的定义内,并且您正在尝试在其中创建更多相同类的对象。当创建这些Person对象时,它们也会尝试创建更多Person对象,依此类推。
这个递归定义会使堆栈失效,因为它是无限的,永远不会结束。
尝试定义此代码块:
Person[] people = {
new Person { Name="Allen Frances", Age=11, CanCode=false },
new Person { Name="Burke Madison", Age=50, CanCode=true }
}
在代码的不同部分,也许是主要方法?
答案 1 :(得分:0)
尝试
Person[] people = new Person[2] {
new Person { Name="Allen Frances", Age=11, CanCode=false },
new Person { Name="Burke Madison", Age=50, CanCode=true }
};