2016-04-20 14 views
1

Ich benutze statische Liste, um einige Zeichenfolge Werte zu halten, wenn Anwendung startet nur eine statische Liste ist genug, aber nach einer Weile muss ich verschiedene Strings in verschiedenen statischen Listen, gibt es eine Möglichkeit, tief zu kopieren oder Klon einer statischen Klasse mit verschiedenen Namen an der Laufzeit in C#Klon der statischen Klasse

public class Foo 
{ 
    public static List<string> orders; 
} 

wie Sie oben sehen können, kann ich hinzufügen und statischen Foo.orders leicht entfernen, aber im laufenden Betrieb muß ich eine andere Klasse zum Beispiel foo2 Klasse. By the way, Liste statisch sein müssen, aber ich brauche Liste zu erreichen aus verschiedenen Klassen, auch kann eine nicht neue Klassen erstellen, während die Entwicklung, denn wie viele statische Liste, die ich nicht kenne

danke

+6

Dies ist genau, was Objektinstanzen sind. "kann während der Entwicklung keine neuen Klassen erstellen". Ich denke du verpasst etwas Wichtiges. Ich denke, eine bessere Frage könnte lauten: "Wie übergebe ich Instanzen von Objekten in meinem Code?" Oder Ähnliches. – vcsjones

+0

Wenn Sie zur Laufzeit etwas hinzufügen müssen, ist es nicht statisch. – juharr

+0

Was meinst du mit "in Runtime brauche ich eine andere Klasse zum Beispiel Foo2-Klasse" Meinst du, du willst eine _second_ 'Foo'-Klasse, oder erstellen Sie buchstäblich eine Klasse zur Laufzeit mit Code-Generierung? –

Antwort

3

Sie können nicht erstellen neue statische Klassen während der Laufzeit, aber Sie können ein statisches Wörterbuch von Listen halten:

public class Foo 
{ 
    public static Dictionary<string,List<string>> Lists 
                 = new Dictionary<string,List<string>> 
    { 
     {"orders", new List<string>()} 
    }; 
} 
0

Wenn Sie wirklich Englisch: www.openbsd.dk/faq/pf//queueing.html Sie müssen die Möglichkeit haben, auf die Liste zu verweisen, ohne dass eine Instanz weitergegeben wird. Sie möchten von einer statischen Klasse (die global definiert ist) in den Bereich von Singletons wechseln, die in dem von Ihnen bevorzugten Bereich gespeichert werden der Thread oder der Ausführungspfad zum Beispiel).

Allerdings würde ich ernsthaft darüber nachdenken, Ihren Ansatz zu überdenken, wie vorübergehende Instanzen möglicherweise angemessener aus dem Klang davon sein.

3

Wenn Sie unbedingt eine static Klasse verwenden zu handhaben und Sie erwarten werden, um es zu manipulieren, nachdem es (zB Erstellung von anderen Listen, etc.) instanziiert wird dann könnten Sie ein anderes Element zu schaffen, das dieses Verhalten umgehen konnte wie ein List<List<string>> oder ein Dictionary<string,List<string>>:

public static Dictionary<string,List<string>> Orders = new Dictionary<string, List<string>>(); 

Wenn Sie verwenden waren ein Wörterbuch, dann könnten Sie einen Schlüssel für jede Ihrer verfügbaren Listen speichern List1, List2 und dann Zugriff auf jede Liste durch seine Schlüssel):

Foo.Orders["List1"]; // yields your first list 

und

Foo.Orders.Add("List2",new List<string>()); // Create a new list in your Dictionary 
-3

Best Practice ist ein separates öffentliches statisches Feld für jede mögliche Liste zu erstellen, die Sie jemals brauchen könnten. Ich würde ein Skript schreiben, um den Code für mindestens 10.000 Listen zu generieren.

public class Foo 
{ 
    public static List<string> orders1; 
    public static List<string> orders2; 
    public static List<string> orders3; 
    public static List<string> orders4; 
    public static List<string> orders5; 
    public static List<string> orders6; 
    public static List<string> orders7; 
    public static List<string> orders8; 
    public static List<string> orders9; 
    public static List<string> orders10; 
    public static List<string> orders11; 
    public static List<string> orders123; 
    public static List<string> orders13; 
    public static List<string> orders14; 
    public static List<string> orders15; 
    public static List<string> orders16; 
    public static List<string> orders17; 
    public static List<string> orders18; 
    public static List<string> orders19; 
    public static List<string> orders20; 
    public static List<string> orders21; 
    public static List<string> orders22; 
    public static List<string> orders23; 
    public static List<string> orders24; 
    public static List<string> orders25; 
    public static List<string> orders26; 
    public static List<string> orders27; 
    public static List<string> orders28; 
    public static List<string> orders29; 
    public static List<string> orders30; 
    public static List<string> orders31; 
    public static List<string> orders32; 
    public static List<string> orders33; 
    public static List<string> orders34; 
    public static List<string> orders35; 
} 
+2

Ich wünschte ich könnte nur "lol" kommentieren. –

+1

Das ist absolut verrückt. –

+0

Verschwendung von Seitenraum für echten Code – Dbuggy

Verwandte Themen