Conditional erklärt Arrays in einem zweidimensionalen Array char?
-
08-10-2019 - |
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.)
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.