【发布时间】:2022-01-28 13:25:55
【问题描述】:
我正在阅读 Avalonia 源代码,我偶然发现了这句话:
return new MenuFlyoutPresenter
{
[!ItemsControl.ItemsProperty] = this[!ItemsProperty],
[!ItemsControl.ItemTemplateProperty] = this[!ItemTemplateProperty]
};
我从未见过这样的语法。如果没有索引属性或 this[] 访问器,这些括号会做什么?如果它们所指的属性不是布尔值,为什么它们会用感叹号否定?,也许是某种空检查?
代码本身包含在以下cs文件中:
https://github.com/AvaloniaUI/Avalonia/blob/master/src/Avalonia.Controls/Flyouts/MenuFlyout.cs
我已经跟踪了代码,但我无法理解该语法的作用。
【问题讨论】:
-
但是集合初始化器有花括号不是吗?另外,为什么它们被否定了?
-
不,他们没有,请阅读我链接到的部分
-
@AleksanderStukov:集合初始化器分为两大类:用于列表和用于字典。这是用于字典的语法。另外,UED 不应该惹到 Raynor。