c#初始值设定项块属性设置了一个没有设置的属性

本文关键字:属性 设置 一个 | 更新日期: 2023-09-27 18:00:55

这里有一个来自Xamarin:的类

using System;
using System.Collections.Generic;
namespace Xamarin.Forms
{
    [ContentProperty("Children")]
    public abstract class Layout<T> : Layout, IViewContainer<T> where T : global::Xamarin.Forms.View
    {
        protected Layout();
        public IList<T> Children { get; }
        protected virtual void OnAdded(T view);
        protected virtual void OnRemoved(T view);
    }
}

正如你所看到的,Chidren属性没有集合,但我可以使用块初始化器设置属性:

new StackLayout
{
     Children = { Foo, Bar }
}

这应该被允许吗?如果是从这个类继承的,我如何在构造函数上设置Children属性?

c#初始值设定项块属性设置了一个没有设置的属性

这是一个集合初始值设定项。它被编译为对Children.Add()的调用。