在WPF中,当与值类型一起使用时,DependencyProperty会导致大量的装箱/拆箱吗?

Jam*_*oat 8 c# wpf dependency-properties

在WPF中,当与值类型一起使用时,DependencyProperty会导致大量的装箱/拆箱吗?或者实现一些如何防止这种情况而不是box/unbox值类型?他们是怎么做到的?

我认为值类型是DependencyPropertys的主要用例.

谢谢

    public double Price
    {
        get { return (double)GetValue(PriceProperty); }
        set { SetValue(PriceProperty, value); }
    }


    public static readonly DependencyProperty PriceProperty =
        DependencyProperty.Register("Price", typeof(double), typeof(Quote), new UIPropertyMetadata(0.0d));
Run Code Online (Sandbox Code Playgroud)

lig*_*gaz 9

简短的回答是肯定的.

依赖项属性值的下划线存储没有值类型的概念,并将所有内容存储为对象,这将导致装箱.框架本身通过辅助类BooleanBoxes对布尔属性存储优化使用"聪明的技巧",其具有存储为盒装对象的true和false值.

通常,如果您有一些自定义属性,则无需担心.但是,如果您有一个复杂的场景,其中有数千个自定义依赖项对象飞来飞去,您可能需要考虑装箱/取消装箱性能优化.