对象初始值设定项中的双重赋值

本文关键字:赋值 对象 | 更新日期: 2023-09-27 18:28:35

我刚刚偶然发现了以下内容:

class AFrameworkElement : FrameworkElement
{
    private void SomeMethod() 
    {
        Size s = new Size {
            Width = Height = 10
        };
        // the size isn't used for measuring oder arranging
    }
}

突然我无法调整控件的大小。。。IntelliSense显示了这个问题:我把鼠标放在Height上,它表明FrameworkElement.Height属性是故意的。那么,为什么不可能在对象初始化器中使用双重赋值呢?

对象初始值设定项中的双重赋值

在对象初始值设定项表达式中,对象本身在初始化表达式中是不可访问的。该表达式中使用的任何内容都被解释为在对象初始值设定项之外使用。因此,在这种情况下,在AFrameworkElement的上下文中评估Height = 10,并且Height绑定到该对象上的属性