2010-07-07 86 views
1

我会尽量使这个简单而快速..我从来没有尝试过,所以我有点失去了..我想要做的是有一个变量字符串(OP20)有一个基于值上得到满足。也许有做到这一点更简单的方法...的条件。例如:有条件的变量值

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 

回答

2

我会建议使用switch结构。在这里看到一个参考:

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

它总是一个好主意,有一个default情况下,如果你正在测试的变量分配的东西你没有明确设置。

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

最后,您的代码将无法编译,因为你是试图声明OP20三次:刚刚宣布一次然后将它设为您请。

希望有帮助!

1

我建议你使用字典。

这将使您的检索代码更简单。

2

由于您基于单个变量值(op20raw)分支代码,因此可以使用switch语句。

例如:

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

作为替代可以创建一个Dictionary<string,string>其中是用于op20raw变量和的可能值是用于OP20变量的相应值。 然后,只需从字典中获取正确的值:

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

您的解决方案几乎是最好的只有两个或三个条件。

我会倾向于选择这个,如果有超过两个或三个:

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

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

您可以使用switch语句:

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