class 内部的 class 实例

Instance of class inside of the class itself

此代码有效:

class Person{
    public Person p;
    public string name;
    private int age;

}
class Solution {


    static void Main(String[] args) {

        Person z = new Person () { name = "Stacl"};
        Console.WriteLine (z.name);
        Person a = new Person ();
        Console.WriteLine (a.name);

    }
}

但这行不通:

class Person{
    public Person p = new Person (){name = "Inside",age = 45}; // add 'new'
    public string name;
    private int age;

}
class Solution {


    static void Main(String[] args) {

        Person z = new Person () { name = "Stacl"};
        Console.WriteLine (z.name);
        Person a = new Person ();
        Console.WriteLine (a.name);

    }
}

你能解释一下这是怎么发生的以及为什么会发生吗?

正如@Lucas 在评论中提到的那样,这会导致创建 Person.

的无限循环

你不能构造一个Person而不初始化p字段,它构造一个Person,它构造一个Person,等等...

当然,这最终会导致 WhosebugException

您实际想要实现的是:

class Person{
    public string name = "Inside";
    private int age  = 45;
}

在 Person 实例中创建 Person 实例将导致 WhosebugException。 但是由于您是从外部访问 'name'-字段而不是 'p'-字段,因此无论如何都没有必要。

顺便说一下,您应该用属性替换 public 字段,因为这是推荐的样式。

class Person{
    public Person() {
        Name = "Inside";
    }

    public string Name {get; set;}
    private int age = 45;
}