|
|
Speicherverwaltung get/set |
|
Nicolas |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 12.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2014, 02:38
Titel: Speicherverwaltung get/set
|
|
|
|
|
Hallo allesamt!
Vorweg sei erwähnt, was ich eigentlich erreichen will:
Ich habe eine Klasse, die stark reduziert so aussieht:
Sie hat also Eigenschaften wie 'Data' und 'FieldData' mit vollem Zugriff für den Nutzer und einige, lediglich lesbare Eigenschaften -- alle hängen jedoch von einander ab:
Wenn z.B. ein Eintrag zu 'FieldData' hinzugefügt wird, so soll auch ein neues Feld in 'Data' mit jenem Namen entstehen -- und umgekehrt.
Um diese Abhängigkeiten stets zu erfüllen, habe ich bisher die set/get-Funktionen genutzt, bis mir aufgefallen ist, dass hierdurch bei jedem Schreibzugriff, wie z.B
das gesamte Feld MyRepository.Data.Test zuvor (call-by-value) kopiert wird, was ich natürlich vermeiden will!
Hierzu meine Frage:
Gibt es eine Möglichkeit auf Property-Zugriffe zu reagieren, ohne ineffiziente Speicherzugriffe auszulösen?
Es reicht in meinem Fall aus, vor dem Lese- bzw. dem Schreibzugriff die Abhängigkeiten zu aktualisieren.
Auch die Verwendung der Attribute SetObservable und GetObservable scheint keine Lösung des Problems zu sein, da das Setzen dieser Attribute ebenfalls dazu führt, dass beim Schreibzugriff eine Kopie der Property erzeugt wird.
Ich hoffe auf eure Hinweise;
mit besten Grüßen
Nicolas
PS: Um das von mir beschriebene Problem des Mehraufwandes beim Schreibzugriff nachvollziehen zu können, sind diese Code-Beispiele vielleicht noch nützlich:
Gewünschte Geschwindigkeit:
Unerwünschte Geschwindigkeit in meiner Klasse:
Hierfür zunächste die Klassendefinition:
... und der Beispielcode:
Bei Weglassung des Attributs GetObservable gleicht der Schreibzugriff des zweiten Code-Beispiels von der Leistung dem des ersten Code-Beispiels.
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|