2010-12-11 63 views
0

J'ai un tableau char à deux dimensions déclaré avec quatre chaînes.Déclarations conditionnelles de tableaux dans un tableau char à deux dimensions?

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() 
    }; 
} 

Je veux déclarer et initialiser le tableau tel que l'ajout de chaîne est conditionnelle basée sur quatre drapeaux booléens. Par exemple, si includeOne et includeThree sont true, je veux finir par un charGroup [2] [5] ayant utilisé string1 et string 3.

(Ceci est un code existant où je ne veux pas changer radicalement le reste du code, si je peux déclarer conditionnellement le tableau dans ce bloc, j'ai terminé.)

+0

Pourriez-vous expliquer votre problème par exemple. –

+0

J'ai ajouté un peu plus de viande à ma description. J'espère que ça suffit. – alphadogg

Répondre

0

La manière que vous voulez est comme une liste, donc il vaut mieux la mettre en œuvre par liste, puis retourne un tableau par ToArray:

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(); 
} 
+0

Cela fonctionne. Je pensais que je devais aller à une structure plus dynamique, mais demandais au cas où j'avais oublié une approche plus simple. – alphadogg

-2

1) Comptez le nombre de chaînes à ajouter (combien de drapeaux sont vrais).

2) char[][] charGroups = new char[count][]; (peut-être nécessaire char[][count], je suis sur le fonctionnement très peu de sommeil)

3) Init un indice à 0; pour chaque indicateur, s'il est défini, placez le char[] approprié dans cet index et incrémentez l'index.

Mais pourquoi, oh pourquoi prenez-vous les String s dans char[] s? La classe String est votre ami. Il veut vous faciliter la vie.

0

Je n'ai pas la machine virtuelle va mais je pense que cela devrait fonctionner ...

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] 
    }; 
} 

Si tout ce que vous voulez faire est de comprendre la chaîne comme un tableau de caractères si leur drapeau respectif est fixé alors je pense que cela fera l'affaire. Il utilise l'opérateur conditionnel pour inclure le côté gauche de ':' (si includeX est vrai) sinon inclure le côté droit.

+0

Cela ajoutera-t-il des tableaux vides? IOW, y aura-t-il quatre tableaux dentelés dans le tableau charGroup dont certains peuvent être des tableaux de longueur zéro, ou un nombre exact de tableaux? – alphadogg