2010-07-07 88 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.. 
}