2010-07-07 4 views
1

Je vais essayer de rendre ceci simple et rapide .. Je n'ai jamais essayé cela auparavant donc je suis un peu perdu .. Ce que je veux faire est d'avoir une chaîne variable (op20) qui a une valeur basée sur une condition remplie .. peut-être il y a un moyen plus facile d'y arriver ... Exemple:Valeur de la variable conditionnelle

string op20A = "5"; 
string op20D = "19"; 
string op20C = "6"; 
string op20E = "14"; 
string op20J = "15"; 
string op20Y = "21"; 

string op20raw = "R288319" 

if (op20raw == "R288319") string op20 = op20A; 
if (op20raw == "R288320") string op20 = op20D; 
if (op20raw == "R288321") string op20 = op20C; 
etc etc 

Répondre

2

Je suggère d'utiliser une switch construction. Voir ici pour une référence:

http://msdn.microsoft.com/en-us/library/06tc147t(VS.80).aspx

Il est toujours une bonne idée d'avoir un default cas, dans le cas où la variable que vous testez est attribué quelque chose que vous ne l'aviez pas explicitement défini.

string op20A = "5"; 
string op20D = "19"; 
string op20C = "6"; 
string op20E = "14"; 
string op20J = "15"; 
string op20Y = "21"; 

string op20raw = "R288319" 

// declare the string first 
string op20; 

// now assign it using a 'switch' statement 
switch (op20raw) 
{ 
    case "R288319": 
     op20 = op20A; 
     break; 
    case "R288320": 
     op20 = op20D; 
     break; 
    case "R288321": 
     op20 = op20C; 
     break; 
    default: 
     op20 = "something else"; 
     break; 
} 

Enfin, votre code ne compilerait pas parce que vous tentiez de déclarer trois fois OP20: il suffit de déclarer une fois l'affecter comme vous s'il vous plaît.

Espérons que ça aide!

1

Je vous suggère d'utiliser un dictionnaire.

Cela rendra votre code de récupération plus simple.

2

Comme vous branchez votre code en fonction d'une seule valeur de variable (op20raw), vous pouvez utiliser l'instruction switch.

Par exemple:

string op20 = String.Empty; 
switch(op20raw) { 
     case "R288319": 
      op20 = op20A; 
      break; 
     case "R288320": 
      op20 = op20B; 
      break; 
     // and so on 
     } 

Comme alternative, vous pouvez créer un Dictionary<string,string> où les clés sont les valeurs possibles pour la variable op20raw et les valeurs sont les valeurs correspondantes pour la variable OP20. Ensuite, obtenir simplement la valeur correcte du dictionnaire:

string a20 = myDictionary.ContainsKey(op20raw) ? myDictionary[op20raw] : String.Empty; 
6

Votre solution est presque le meilleur pour deux ou trois conditions.

je tendance à préférer ce s'il y a plus de deux ou trois:

var map = new Dictionary<string, string>() { 
    { "R288319", op20A }, 
    { "R288320", op20D }, 
    { "R288321", op20C } 
}; 

string op20 = map[op20raw]; // assuming no erroneous raw strings 
0

Vous pouvez utiliser une instruction switch:

switch(op20raw) 
{ 
    case "R288319": 
    op20 = op20A; 
    break; 
    case "R288320": 
    op20 = op20D; 
    break; 
etc.. 
}
Questions connexes