我看过这个代码示例,它看起来像是将一个数组初始值设定项分配给一个列表。我以为它不会工作,但不知何故它编译了。 {} 不是数组初始值设定项吗? Children 的类型为 IList。如果大括号前没有“新列表”,它如何工作?
var nameLayout = new StackLayout()
{
HorizontalOptions = LayoutOptions.StartAndExpand,
Orientation = StackOrientation.Vertical,
Children = { nameLabel, twitterLabel }
};
编辑:当我尝试时Children = new List<View>{ nameLabel, twitterLabel }
时,编译器会给出以下警告:“无法分配属性或索引器 Layout.Children,它是只读的。”
顺便说一句,代码片段来自 Xamarin:https://developer.xamarin.com/guides/xamarin-forms/getting-started/introduction-to-xamarin-forms/ https://developer.xamarin.com/guides/xamarin-forms/getting-started/introduction-to-xamarin-forms/
其他两个答案似乎对它的实际工作原理存在一些困惑。我建议您参阅有关对象初始值设定项的 C# 规范部分,其中清楚地总结了语义:
在等号后指定集合初始值设定项的成员初始值设定项是嵌入式集合的初始化。初始化程序中给定的元素将添加到字段或属性引用的集合中,而不是将新集合分配给字段或属性。
请记住,该规范是为了您的方便而发布的;如果您对 C# 语言构造的含义有疑问,它(或带注释的印刷版本“C# 编程语言”)应该是您的第一个参考。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)