Frage

Grüße,

Ich bin ein Anfänger zu OO und Programmierung und ich habe die folgende Situation vor:

Ich habe eine Reihe von const Werten und Aufzählungen, die die Klassen mehr I Aktie implementieren.

Diese Klassen sind unabhängig das heißt andere als diese Werte teilen, sie interagieren nicht miteinander, so sie erben wird nicht funktionieren.

Ich habe mich gefragt; Wenn ich mit eben diesen consts und Aufzählungen eine leere Klasse erstellen und dann ein Objekt dieser Klasse in jeder Klasse deklarieren, dann könnte ich diese Werte verwenden, wie:

globals.enum.enummember?

Ist die Klangprogrammierung oder gibt es einen besseren Weg, dies zu tun?

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Am besten ist es, einfach die Aufzählungen zu erklären neben mit Ihren Klassen, nicht in einer Klasse verschachtelt. Eigentlich sind verschachtelte Typen in der Regel eine schlechte Idee, es sei denn, sie sind privat. Es gibt natürlich Ausnahmen, aber zum größten Teil sind Sie besser ohne nisten.

Konstanten hat in einer Klasse definiert werden, aber Sie brauchen nicht ein Objekt der Klasse instanziiert sie zu nutzen. Auch sie können öffentlich sein, so dass Sie nicht alles erben müssen. Wenn Sie es schwer genug denken, sollten Sie in der Lage sein, einen guten Namen für die Klasse, um herauszufinden, dass diese Konstanten enthält.

Die Praxis zeigt, dass Konstanten und Aufzählungen selten einfach global sind. Die meisten der Zeit, die sie mit einem oder wenigen Klassen eng gekoppelt sind. Sie sollten dann diese Konstanten als Teil der entsprechenden Klasse definieren und Aufzählungen im gleichen Namensraum wie die Klasse setzen sie zu benutzen.

Andere Tipps

Sie können mit statischer Klasse mit statischen Mitgliedern gewünschtes Verhalten erreichen:

namespace A {
    public static class Enum1 {
       public static readonly int EnumMember1 = 1;
       public static readonly int EnumMember2 = 2;
       public static readonly int EnumMember3 = 3;
    }
}

Sie sollten dies auf folgende Weise verwendet werden:

int x = A.Enum1.EnumMember2;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top