Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 构造函数中值的初始化_C#_Oop - Fatal编程技术网

C# 构造函数中值的初始化

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

你能告诉我…和下列构造函数的区别吗 初始化

这里的人是一个班级。。因为我试图初始化一些值。。。 我已经创建了三个名为

姓名、年龄、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的类的定义内,并且您试图在该类内创建同一类的更多对象,因此会出现堆栈溢出。创建这些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..时,它没有显示错误?因为静态意味着它绑定到类定义,而不是实例。所以这条线只运行一次,而不是每次创建一个人。即使这样做是可行的,但这是保存人员列表的错误位置,应该在程序的更高级别上进行。