【问题标题】:C# Class without explicit constructor and read only property [duplicate]没有显式构造函数和只读属性的 C# 类
【发布时间】:2017-03-17 17:19:17
【问题描述】:

谁能解释一下这段代码是如何工作的?

public class Person
{
    readonly List<Person> _children = new List<Person>();
    public IList<Person> Children
    {
        get { return _children; }
    }

    public string Name { get; set; }
}

public static Person GetFamilyTree()
{
    return new Person
    {
        Name = "David Weatherbeam",
        Children =
        {
            new Person
            {
                Name="Alberto Weatherbeam",
                Children=
                {
                    new Person
                    {
                        Name="Jenny van Machoqueen",
                        Children=
                        {
                            new Person
                            {
                                Name="Nick van Machoqueen",
                            },
                            new Person
                            {
                                Name="Matilda Porcupinicus",
                            }
                        }
                    }
                }
            }
        }
    };
}

“Children”属性是“只读”的(因为它没有设置器)。 'GetFamilyTree' 函数似乎使用了一个隐式初始化器,它适用于 'Name' 属性,因为它可以在 'Person' 外部访问,但如何在此函数中分配 'Children' 属性?

感谢您的解释。 干杯。

【问题讨论】:

    标签: c# object-initializers


    【解决方案1】:

    这个有点令人困惑的对象初始化语法检索带有get访问器的集合,并在集合上使用公共Add方法。它之所以有效,是因为属性 IList&lt;Person&gt; 的编译时类型具有(继承)a public Add method 和兼容的签名(接受 Person 参数)。

    【讨论】:

    • 谢谢杰普!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2022-12-16
    相关资源
    最近更新 更多