C# 构造函数中值的初始化
你能告诉我…和下列构造函数的区别吗 初始化 这里的人是一个班级。。因为我试图初始化一些值。。。 我已经创建了三个名为 姓名、年龄、CanCode 叫其中一个C# 构造函数中值的初始化,c#,oop,C#,Oop,你能告诉我…和下列构造函数的区别吗 初始化 这里的人是一个班级。。因为我试图初始化一些值。。。 我已经创建了三个名为 姓名、年龄、CanCode 叫其中一个 //Without Static public Class Person { Person[] people = { new Person { Name="Allen Frances", Age=11, CanCode=false }, new Person { Name="Bu
//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的类的定义内,并且您试图在该类内创建同一类的更多对象,因此会出现堆栈溢出。创建这些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 }
};
试一试
Person[] people = new Person[2] {
new Person { Name="Allen Frances", Age=11, CanCode=false },
new Person { Name="Burke Madison", Age=50, CanCode=true }
};
请用准确的代码示例重写问题(例如,我在代码中没有看到
out
关键字)。此外,仅对代码使用代码块(缩进)以使问题可读。请用确切的代码示例重写问题(例如,我在代码中没有看到out
关键字)。此外,仅对代码使用代码块(缩进)以使问题可读。值得注意的是,堆栈清理代码的语义也不正确,或者最多是奇怪的。类中的实例字段应包含有关该类实例的某些信息,或对该实例所拥有或包含的对象的引用。一个人通常不包含其他人!因此,这段代码实际上不起作用的事实并不那么麻烦。如果OP想要在某个地方保存一个人员列表,它可能应该在人员
类或人员存储库
类中。感谢您的回复。但是当我使用静态关键字why..时,它没有显示错误?因为静态意味着它绑定到类定义,而不是实例。所以这条线只运行一次,而不是每次创建一个人。即使这样做是可行的,但这是保存人员列表的错误位置,应该在程序的更高级别上执行。值得注意的是,堆栈清理代码的语义也不正确,或者说是奇怪的。类中的实例字段应包含有关该类实例的某些信息,或对该实例所拥有或包含的对象的引用。一个人通常不包含其他人!因此,这段代码实际上不起作用的事实并不那么麻烦。如果OP想要在某个地方保存一个人员列表,它可能应该在人员
类或人员存储库
类中。感谢您的回复。但是当我使用静态关键字why..时,它没有显示错误?因为静态意味着它绑定到类定义,而不是实例。所以这条线只运行一次,而不是每次创建一个人。即使这样做是可行的,但这是保存人员列表的错误位置,应该在程序的更高级别上进行。