Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Settings überall verfügbar machen
Viper2000
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

Settings überall verfügbar machen

beantworten | zitieren | melden

Hallo Forum,

ich habe mal eine Frage. Ich denke die Frage bewegt sich richtung Objektorientierung.

Ich habe eine Windows Form Applikation und mir dazu eine eigene recht umfangreiche Klasse zur Anwendungskonfiguration geschrieben. Die Klasse verwaltet Einstellungen die ich in meiner Form für andere Aufgaben brauche.

Ich erzeuge in meinem Form eine Instanz der Config-Klasse und kann dann über die Methoden dieser Klasse die Einstellungen beeinflussen und in einer Konfigurationsdatei schreiben und auch wieder einlesen. Soweit so gut.

Jetzt möchte ich allerdings die Einstellungen nicht direkt in meinem Hauptform befüllen sondern in einem seperaten Formular eine TreeView bauen wo ich die Einstellungen bearbeiten kann.

Ich möchte also das Objekt in einem seperaten Form lesen und schreiben und in meinem Hauptform nur lesend auf die Einstellungen zugreifen um den Programmablauf entsprechend zu beeinflussen.

Wie macht man das? Tut man dem neuen Form das Objekt mit dem Schlüsselwort ref übergeben? Oder wie ist die allgemeine Vorgehensweise für ein solches Problem?

Viele Grüße
viper
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Viper2000,

ja, einfach das Objekt an den Konstruktor der neuen Form übergeben. ref ist dafür nicht erforderlich und würde sogar verwirren. Siehe [Artikel] C# und Übergabemechanismen: call by value vs. call by reference (ref/out).

Für die Anwendung globale Setting sind m.E. einer der wenigen Fälle, wo auch ein Singleton in Frage kommen würde.

herbivore
private Nachricht | Beiträge des Benutzers
Viper2000
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

beantworten | zitieren | melden

Guter Artikel!

Jetzt bin ich aber leicht verwirrt weil gerade in meinem Fall müsste ich doch dann die Referenz übergeben damit das Objekt in der Hauptform ebenfalls beeinflusst wird wenn ich in meinem Settings Form Einstellungen ändere.

Wenn ich das Objekt ohne ref an den Konstruktor des Settings Forms übergebe dann spiele ich doch nur auf dem kopieren Objekt und mein Config Objekt in der Hauptform bleibt auf den alten Werten stehen...
private Nachricht | Beiträge des Benutzers
JuyJuka
myCSharp.de - Experte

Avatar #avatar-2316.jpg


Dabei seit:
Beiträge: 2.187
Herkunft: Deutschland

beantworten | zitieren | melden

Hallo Viper2000,

Wenn dein Objekt ein ReferenzType ist (class) dann wird er immer per Referenz übergeben, daher ist ref überflüssig/verwirrend.

Gruß
Juy Juka
private Nachricht | Beiträge des Benutzers
Viper2000
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

beantworten | zitieren | melden

okayyyyyy, aber diese Aussage spricht doch genau gegen den von Herivore verlinkten Artikel. Dort wird auch eine Klasse erzeugt und per ref übergeben. Bei der übergabe ohne ref passiert ja dann genau das was ich nciht so unbedingt möchte
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10.006

beantworten | zitieren | melden

Nein, du solltest den Artikel genauer lesen, und den Unterschied zwischen
Value- und Referenztypen genauer herausarbeiten.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Viper2000,

natürlich kann man auch Referenzen per ref (also per Referenz) übergeben, Aber dann hat am eben eine Referenz auf eine Referenz. Und das brauchst du nicht. Dir reicht die normale Übergabe ohne ref. Im Zweifel probiere es aus.

herbivore
private Nachricht | Beiträge des Benutzers
Viper2000
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

beantworten | zitieren | melden

Ich habe es nun verstanden und habe etwas wichtiges hinzugelernt... Danke euch für die Hilfe!
private Nachricht | Beiträge des Benutzers