2017-05-17 2 views
0

Ich versuche eine Klasse und einen der Parameter zu definieren, die ich aus einer endlichen Liste von Konstanten ziehen möchte, die wie ein Wörterbuch funktioniert. Ich bin nicht wirklich sicher, was ich das nennen oder suchen soll, aber ich denke, ich habe gesehen, dass einige eingebaute Klassen dies benutzen.Klasse erstellen und aus einer Liste von Konstanten auswählen

Der Grund dafür ist, dass die API, die ich verwende, diese Klasse benötigt, um auf eine bestimmte Art und Weise gebaut zu werden und viele Zahlen zu verwenden, die keinen lesbaren Sinn ergeben. Ich würde eher das Objekt mit dem aussagekräftigen Wort als die ID-Nummer, mit der es geht, erstellen.

Beispiel: Enthält = 2, Enthält keine = 5, Größer als = 3, weniger als = 4 usw.

Testclass foo = new Testclass (ENTHÄLT, "Hallo Welt");

Ich möchte dies wie ein Wörterbuch Art arbeiten, so dass der Rest des Codes den ersten Parameter als ‚2‘ behandelt und nicht die Zeichenfolge „ENTHÄLT“

Ich bin aus meinem Kopf oder Ist das möglich? Vielen Dank!

+2

Sie möchten ein Enum? http://stackoverflow.com/questions/943398/get-int-value-from-enum – rene

+0

Nicht ganz sicher, was das bedeutet/mit sich bringt –

+0

Zeit zum Lesen https://docs.microsoft.com/en-us/dotnet/ Artikel/csharp/Programmieranleitung/Enumeration-Typen dann – rene

Antwort

2

Dies ist ein enum. Sie können lassen Sie den Compiler beliebige numerische Werte zuweisen, wenn Sie mögen:

public enum MyOperator { 
    Contains, 
    DoesNotContain, 
    GreaterThan, 
    LessThan 
} 

public class TestClass { 
    public TestClass(MyOperator op, Object operand) { 
     this.Operator = op; 
     this.Operand = operand; 
    } 

    public MyOperator Operator { get; set; } 
    public Object Operand { get; set; } 

Sie die numerischen Werte angeben können, wenn Sie einen Grund haben:

public enum MyOperator { 
    Contains = 2, 
    DoesNotContain = 5, 
    GreaterThan = 3, 
    LessThan = 4 
} 

Und explizit Stimmen:

int x = (int)MyOperator.LessThan; 

Auch stringifizieren:

public void F(MyOperator op) { 
    MessageBox.Show(op.ToString()); 
} 

Vielleicht Operand sollte String sein, oder vielleicht sollte das Ganze generisch sein, aber Sie haben nicht gesagt. Es ist ein Beispiel.

+1

@ S.Petrosov Ich lernte meine Lektion über das Testen –

+0

Ja, das ist, was ich gesucht habe. Gut gemacht. –

Verwandte Themen