条件变量值

时间:2010-07-07 21:51:55

标签: c# variables

我会尝试让这个变得简单快捷..我之前从未尝试过这样我有点失落..我想做的是拥有一个基于条件的值的变量字符串(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

5 个答案:

答案 0 :(得分:6)

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

如果超过两个或三个,我倾向于更喜欢这个:

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

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

答案 1 :(得分: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:只需声明一次然后根据需要分配它。

希望有所帮助!

答案 2 :(得分: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;

答案 3 :(得分:1)

我建议你使用字典。

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

答案 4 :(得分:0)

您可以使用switch语句:

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