C# Referenz auf Referenz?

#2772813
Lesenswert?

Kann man in C# Referenzen auf Referenzen verwenden.
1
List<int> list = new List<int>();
2
List<int> reference = list; // zeigt jetzt auf list
3
reference = new List<int>(); // neue liste in referece, aber immer noch die alte in list

Das Beispiel funktionniert zwar, macht aber nicht was ich will.
Was ich möchte ist:
- Ich habe in einem Objekt verschiedene Listen.
- In Abhängigkeit von verschiedenen Bedingungen, möchte ich mir eine 
Liste Rauspicken und sie mir für später im Programm in einer 
Referenzvariable merken. Oder besser gesagt, mich interessiert nicht die 
Liste selber, sondern die Referenzvariable, die auf die Liste zeigt.
- Es muß möglich sein, der Variable "list" im Beispiel mit Hilfe von 
"reference" zu einem späteren Zeitpunkt eine neue Liste zuzuweisen.

Geht das?
#2772922
Lesenswert?

Es geht nicht darum, "list" direkt eine neue Liste zuzuweisen, sondern 
darum, daß ich irgendwo im Programm eine von mehreren Listen auswählen 
möchte und irgendwo anders im Programm dann diese ausgewählte Liste 
durch eine neue Ersetzen möchte.

Das heißt, ich brauche eine Referenz auf die Referenz von "list", damit 
ich darüber der Referenz eine neue Liste zuweisen kann.

In C++ wäre das dann wohl sowas wie ein Pointer auf die Referenz der 
Liste. Ich will ja nicht die Liste manipolieren, sondern dem 
Referenzobjekt eine neue Liste zuweisen.
Gast #2772934
Lesenswert?

Be Bo schrieb:
> Wäre eine Möglichkeit, wenn auch etwas umständlich. Ich suche mal
> weiter. Kann ja nicht sein, daß sowas in C# garnicht möglich ist.

man kann auch daten in application ablegen, dort kannst du von überall 
drauf zugreifen.
Wenn man für dinge keine schnell lösung finden, dann ist das meist ein 
zeichen dafür das man etwas komplett anders macht als sonst üblich.
#2772956
Lesenswert?

Naja, das genau Problem sieht wie folgt aus.

- Ich habe 4 Listen.
- Davon möchte ich 2 dynamisch auswählen und mir je in einer 
Hilfs-Variable merken.
Mit der einfachen Zuweisung ist es dann zwar möglich, über meine 
Hilfs-Variable auf die Ausgewählten listen zuzugreifen, aber ich kann 
die Listen nicht ersetzen.

Was ich nun suche ist eine Möglichkeit mit Hilfe von Hilfsvariablen die 
2 ausgewählten Listen zu vereinen (z.B. liste1.Union(Liste2).toList();). 
Diese Funtion gibt eine neue gemergte Liste zurück, in der alle 
doppelten Einträge entfernt sind.

Nun möchte ich diese vereinigte Liste den 2 Ausgewählten 
Listenreferenzen zuweisen.

Beispiel:
Liste 1: 1,2,6,8,9 Ausgewält
Liste 2: 4,5,7
Liste 3: 3,4,5,6 Ausgewählt
Liste 4: 5,8,4

neue Liste aus 1 und 3: 1,2,3,4,5,6,8,9

Diese neue Liste soll jetzt 1 und 3 zugeweisen werden. Aber ich will die 
Auswahl nicht noch einmal durchführen. Also muß ich mir irgendwie die 
Ausgewählten Referenen auf Listen merken, um jetzt die alten Listen 
durch meine neue zu ersetzen.
Gast #2774831
Lesenswert?

Ja eine verwaltungsklasse wäre nicht schlecht

du kannst dir aber doch die auswahl als string oder enum merken

also sowas wie

Listen { Liste1, Liste2}

class ListenVerwalter <T>
{

Dictinary<Listen,List<T>> listen

void Create(Listen e,List<t> l);
void Override(Listen e,List<t> l);
List<T> Get(Listen e);
}

und dann

Listen auswahl1;
Listen auswahl2;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren