Ich bin eine Klasse mit den folgenden MembervariablenWie speichere ich eine Auswahl von Elementvariablen in C#?
class SomeClass
{
int idx0_value;
int idx1_value;
int idx2_value;
//...
}
mit bin ich nicht in der Lage, die Struktur dieser Klasse zu ändern.
ich eine Instanz dieser Klasse bin mit gegen einen vorher ausgewählten Index zu überprüfen und einen entsprechenden Wert einer Variablen zugewiesen einige if-else
-Anweisungen:
if(indexIFoundEarlier == 0)
valueIWant = aSomeClass.idx0_value;
else if(indexIFoundEarlier == 1)
valueIWant = aSomeClass.idx1_value;
else
valueIWant = aSomeClass.idx2_value;
Diese ziemlich ineffizient scheint.
In C++ konnte ich effektiv einen Verweis auf das relevante Mitglied speichern, aber in C# ist das nicht möglich, ich habe die verschiedenen Threads zu diesem Thema gelesen.
Gibt es eine bessere (effizienter zu lesen) Art der Zwischenspeicherung der Wahl, die ich getroffen habe, ohne die Struktur von "SomeClass" zu ändern?
Werfen Sie einen Blick auf das Dekorationsmuster. –
Wenn Effizienz keine große Rolle spielt, können Sie immer Reflektion verwenden. – Jashaszun
Es gibt viele Fragen zu Stack Overflow, die sich mit der programmgesteuerten Auswahl und dem Zugriff auf Objektelemente zur Laufzeit befassen. In Ihrem konkreten Beispiel könnte es sinnvoll sein, Reflektion zu verwenden oder ein Lexikon von Accessor-Delegierten zu erstellen, aber mit einer so vage formulierten Frage ist es unmöglich, dies zu wissen. Bitte stellen Sie eine gute [mcve] zur Verfügung, die Ihr Szenario deutlich zeigt, erklären, welche spezifischen Techniken Sie bereits erforscht haben und womit Sie speziell Schwierigkeiten hatten, eine oder mehrere dieser Techniken zu implementieren. –