【问题标题】:Double assignement in object initializer对象初始化器中的双重赋值
【发布时间】:2013-08-22 16:04:09
【问题描述】:

我只是偶然发现了以下内容:

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 属性是有意义的。 那么为什么在对象初始化器中不能使用双重赋值呢?

【问题讨论】:

  • 您不能从初始化器内部引用正在初始化的对象的成员。
  • 我投票决定关闭,因为事实就是如此。除了说:“是的,就是这样,这是规范的一部分,没有太多办法回答这个问题。”解决方法很简单:Width = 10, Height = 10.

标签: c# wpf object-initializers


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 2019-11-16
    • 2023-03-23
    • 1970-01-01
    • 2017-06-17
    • 2014-05-25
    • 2013-06-27
    • 2011-03-14
    相关资源
    最近更新 更多