Kann eine C # -Eigenschaft mehrere Werte akzeptieren?

8

Das könnte ein bisschen ein Anti-Muster sein, aber es ist möglich, dass eine Eigenschaft in einer C # -Klasse mehrere Werte akzeptiert?

Nehmen wir zum Beispiel an, ich hätte eine Eigenschaft Public int, und ich möchte immer, dass sie ein int zurückgibt, aber ich möchte die Eigenschaft durch Zuweisung einer Dezimalzahl, einer Ganzzahl oder eines anderen Datentyps festlegen können. Also meine Frage ist, ob es für Eigenschaften möglich ist, mehrere Werte zu akzeptieren?

    
lomaxx 14.04.2009, 01:52
quelle

5 Antworten

10

Ich denke, was Sie fragen wollen, ist: Wie funktioniert implizit und < a href="http://msdn.microsoft.com/en-us/library/xhbhezf4.aspx"> explizite Casting-Arbeit für int und decimal ?

Sie fragen nach implizitem Casting, das automatisch ein Objekt in einen anderen definierten Typ umwandelt. Sie können dies nicht für int und decimal durchführen, da sie bereits im Framework definiert sind und Sie den Umfang von decimal nicht reduzieren können, indem Sie ihn in ein int umwandeln. Aber wenn Sie das als Beispiel für tatsächliche Objekte verwenden, die Sie erstellt haben, können Sie das implizite verwenden Link oben, um mehr darüber zu erfahren, wie das funktioniert und wie man es implementiert.

Aber Sie können immer die Konvertierungsmethode verwenden, um sie in den richtigen Typ zu konvertieren;

%Vor%     
Nick Berardi 14.04.2009, 01:55
quelle
2

Bearbeiten: Diese Methode kann nicht verwendet werden, da das op spezifisch an Eigenschaften gebunden ist.

Ich glaube nicht, dass dies mit der Robustheit möglich ist, die Sie beschreiben. In diesem Fall wäre es wahrscheinlich besser, wenn Sie eine überladene Methode verwenden (Polymorphismus).

Dies wird normalerweise als Setter (oder Mutator) bezeichnet. Sie können die Methode überladen, um mehrere verschiedene Arten von Parametern zu akzeptieren. Jeder wird anders durchführen, wenn Sie es wünschen. Die Art, wie ich sie eingerichtet habe, ist vielleicht nicht syntaktisch korrekt, aber das ist die allgemeine Idee, nach der Sie suchen, glaube ich.

%Vor%     
Joe Phillips 14.04.2009 01:58
quelle
1

Es scheint so, als müssten Sie den Typ zur Laufzeit ermitteln. Sie könnten die Eigenschaft ein Objekt akzeptieren lassen, den Typ bestimmen und Ihre Aktion ausführen. Sie müssten natürlich Ausnahmen für Dinge einwerfen, die Sie nicht erwarten. Wie du sagst, wahrscheinlich nicht das Beste, aber möglich. :)

    
JP Alioto 14.04.2009 01:55
quelle
0

Nein. Eine Eigenschaft hat einen einzelnen Wert. Sie können ihm alles zuweisen, das einer Variablen desselben Typs zugewiesen werden kann.

    
John Saunders 14.04.2009 01:54
quelle
-1

Eigenschaften sollen wie öffentliche Felder aussehen. Erstellen Sie Setter-Methoden, oder führen Sie die Umwandlung in den Zuweisungsanweisungen im Gegensatz zum Property-Setter aus.

    
yfeldblum 14.04.2009 01:54
quelle

Tags und Links