In WPF verursacht DependencyProperty viel Boxing / Unboxing, wenn es mit Werttypen verwendet wird?

8

In WPF verursacht DependencyProperty viele Boxing / Unboxing, wenn sie mit Werttypen verwendet werden? Oder tut die Implementierung einige, wie dies zu verhindern und nicht Box / Unbox Werttypen? Wie machen sie das?

Ich denke, Werttypen sind ein wichtiger Anwendungsfall für DependencyProperty.

Danke

%Vor%     
JamesRedcoat 30.07.2011, 16:18
quelle

3 Antworten

9

Die kurze Antwort ist ja.

Der Unterstreichungsspeicher für Abhängigkeitseigenschaftswerte hat keine Vorstellung von Werttypen und speichert alles als Objekt, was zum Boxen führen wird. Das Framework selbst verwendet einen "cleveren Trick" für die Optimierung der Booleschen Eigenschaftenspeicher durch eine Hilfsklasse BooleanBoxes, die wahre und falsche Werte als Boxed-Objekte gespeichert hat.

Im Allgemeinen, wenn Sie ein paar benutzerdefinierte Eigenschaften haben, müssen Sie sich keine Sorgen machen. Wenn Sie jedoch eine komplexe Szene haben, in der Tausende von benutzerdefinierten Abhängigkeitsobjekten herumfliegen, möchten Sie vielleicht über Leistungsverbesserungen beim Boxen / Unboxing nachdenken.

    
ligaz 30.07.2011, 16:40
quelle
2

Zusätzlich zu den anderen Antworten:

Wenn WPF eine Abhängigkeitseigenschaft (Bindung und Animation) liest oder ändert, verwendet sie diese Setter und Getter NICHT. Das (Un) Boxen, das Sie im Code zeigen, wird nicht ausgeführt.

Diese Setter und Getter, die Sie zeigen, sind für uns Entwickler.

    
Erno de Weerd 30.07.2011 21:04
quelle
1

Es wird wahrscheinlich Boxen verwenden, aber da dies benutzerskaliert ist, sollte es nicht in einem Maßstab geschehen, der ein Problem wäre.

Beachten Sie, dass häufig auch ein Convertor beteiligt sein wird.

    
Henk Holterman 30.07.2011 16:28
quelle

Tags und Links