myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Kann ich ein Dictionary über Klassen hinweg gleich halten?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Kann ich ein Dictionary über Klassen hinweg gleich halten?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 73


Frokuss ist offline

Kann ich ein Dictionary über Klassen hinweg gleich halten?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten Tag zusammen :-)

ich habe da ein verständnisproblem mit den Referenzen. Das ist ja quasi soetwas wie Pointer?

Und zwar habe ich einen Dictionary, den ich über mehrere WinForms benutze, der aber immer gleich sein soll. Daher wenn ich beim Dictionary etwas verändere, muss/sollte das ganze auch bei den anderen Fenstern so sein (zumindestens im Dictionary, das Interface müsste ich vermutlich eh manuell anpassen).
Beispiel-Code (nicht kopiert):

C#-Code:
public class Fenster_A{
  Dictionary<int, object> para1 = new Dictionary<int, object>();
  public Fenster_A(){
    Fenster_B b = new Fenster_B(ref para1);//Das würde bei mir eigentlich durch ein Event ausgelöst
    b.Show();
  }
}

public class Fenster_B{
  Dictionary<int, object> para1;
  public Fenster_B(ref Dictionary<int, object> para1){
    this.para1 = para1;
  }
}

Habe ich das jetzt richtig verstanden, dass nun beide Fenster sich die Ressource teilen? Oder mache ich damit irgendetwas komisches?

Kann mir vielleicht auch einer sagenn, wofür man eigentlich in und out braucht?

Wäre super cool. Besten Gruß
Frokuss

Nachträge: Fehler korrigiert

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Frokuss am 20.02.2018 11:50.

20.02.2018 11:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pinki
myCSharp.de-Mitglied

images/avatars/avatar-4072.jpg


Dabei seit: 24.08.2008
Beiträge: 562
Herkunft: Minden


pinki ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Frokuss,
da es sich beim Dictionary um einen  Verweistypen handelt, musst du das nicht direkt per ref übergeben. Das wäre nur der Fall, wenn du innerhalb von Fenster_B der Variablen para1 aus Fenster_A einen neuen Wert zuweisen möchtest. Willst du hingegen nur, dass der Inhalt gleich ist, dann reicht es auch ohne ref aus, da es sich dann zwar um verschiedene Variablen handelt, diese jedoch beide auf das selbe Objekt verweisen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von pinki am 20.02.2018 11:52.

20.02.2018 11:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 73

Themenstarter Thema begonnen von Frokuss

Frokuss ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Cool, danke dir pinki :-)

das heißt ich könnte die beiden "ref"s weglassen. Und wenn ich dann in Fenster_B ein para1.Add(1, new object()) mache, wäre das trotzdem auch in Fenster_A vorhanden?

Gruß Frokuss
20.02.2018 11:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

images/avatars/avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 4.939
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Frokuss,

Zitat von Frokuss:
Habe ich das jetzt richtig verstanden, dass nun beide Fenster sich die Ressource teilen?

Ja, aber das hat nichts mit dem ref-Schlüsselwort zu tun, sondern damit, daß die Dictionary-Klasse ein Verweistyp ist.

Zitat von Frokuss:
Kann mir vielleicht auch einer sagenn, wofür man eigentlich in und out braucht?

Ein typischer Anwendungsfall sind die TryParse-Methoden der Datentypen int, decimal, DateTime etc., also wenn man z.B. in einer Methode mehrere Rückgabewerte hat.

Zitat von Frokuss:
das heißt ich könnte die beiden "ref"s weglassen

Ja
20.02.2018 12:00 Beiträge des Benutzers | zu Buddylist hinzufügen
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 73

Themenstarter Thema begonnen von Frokuss

Frokuss ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Alles klar, danke euch beiden.

Gruß Frokuss
20.02.2018 12:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Peter Bucher Peter Bucher ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-2785.jpg


Dabei seit: 17.03.2005
Beiträge: 5.875
Entwicklungsumgebung: VS08
Herkunft: Zentralschweiz


Peter Bucher ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

06.03.2018 10:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 73

Themenstarter Thema begonnen von Frokuss

Frokuss ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke dir Peter. Habs mir grade zu genüge gezogen :-)

Gruß Frokuss
06.03.2018 21:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 3 Monate.
Antwort erstellen


© Copyright 2003-2018 myCSharp.de-Team. Alle Rechte vorbehalten. 21.06.2018 08:27