我正在阅读 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
我已经跟踪了代码,但我无法理解该语法的作用。