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%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.
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.
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.
Tags und Links wpf c# dependency-properties