Frage

Ich habe einen zweidimensionalen char-Array mit vier Saiten erklärt.

private static string string1 = "abcde";
private static string string2 = "ABCDE";
private static string string3 = "12345";
private static string string4 = "67890";

public string selectChars(bool includeOne, bool includeTwo, bool includeThree, bool includeFour)
{
   char[][] charGroups = new char[][] 
   {
       string1.ToCharArray(),
       string2.ToCharArray(),
       string3.ToCharArray(),
       string4.ToCharArray()
   };
}

Ich möchte deklariert und initialisiert das Array, so dass die Zeichenfolge Add bedingten basiert auf vier Bool Flags. Zum Beispiel, wenn includeOne und includeThree wahr ist, mag ich mit einem charGroup am Ende [2] [5] verwendet string1 und string 3.

(Dies wird vorhandene Code, wo ich will nicht radikal den Rest des Codes ändern. Wenn ich bedingt das Array in diesem Block erklären kann, ich bin fertig.)

War es hilfreich?

Lösung

Die Art und Weise Sie wollen, ist wie eine Liste, so ist es besser, sie durch die Liste zu implementieren ist und dann eine Reihe von ToArray zurück:

public string selectChars(bool includeOne, bool includeTwo, bool includeThree, bool includeFour)
{
        List<char[]> chars = new List<char[]>();
        string string1 = "";
        if (includeOne)
            chars.Add(string1.ToCharArray());
        if(includeTwo) ....

        char[][] charGroups = chars.ToArray();
}

Andere Tipps

Ich habe nicht die VM gehen, aber ich denke, das sollte funktionieren ...

private static string string1 = "abcde";
private static string string2 = "ABCDE";
private static string string3 = "12345";
private static string string4 = "67890";

public string selectChars(bool includeOne, bool includeTwo, bool includeThree, bool includeFour)
{
   char[][] charGroups = new char[][] 
   {
       include1 ? string1.ToCharArray() : new char[0],
       include3 ? string2.ToCharArray() : new char[0],
       include3 ? string3.ToCharArray() : new char[0],
       include4 ? string4.ToCharArray() : new char[0]
   };
}

Wenn alles, was Sie wollen, ist zu tun, um die Zeichenfolge als Zeichenfeld enthält, wenn ihre jeweiligen Flag gesetzt ist, dann denke ich, das den Trick tun wird. Es wird den bedingten Operator mit der linken Seite schließen ‚:‘. (Wenn INCLUDEx wahr ist), ansonsten die rechte Seite umfasst

1) Zählen, wie viele Strings müssen hinzugefügt werden (wie viele der Fahnen wahr sind).

2) char[][] charGroups = new char[count][]; (Möglicherweise müssen char[][count] sein, ich bin Betrieb auf sehr wenig Schlaf)

3) Init einen Index 0; für jede Flagge, Set, wenn es, legen Sie den entsprechenden char[] in diesen Index und den Index erhöhen.

Aber warum, oh warum Sie die String nehmen s auseinander in char[] s? Die String Klasse ist dein Freund. Sie will Ihnen das Leben leichter machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top