有条件的变量值
问题描述:
我会尽量使这个简单而快速..我从来没有尝试过,所以我有点失去了..我想要做的是有一个变量字符串(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
答
我会建议使用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三次:刚刚宣布一次然后将它设为您请。
希望有帮助!
答
我建议你使用字典。
这将使您的检索代码更简单。
答
由于您基于单个变量值(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;
答
您的解决方案几乎是最好的只有两个或三个条件。
我会倾向于选择这个,如果有超过两个或三个:
var map = new Dictionary<string, string>() {
{ "R288319", op20A },
{ "R288320", op20D },
{ "R288321", op20C }
};
string op20 = map[op20raw]; // assuming no erroneous raw strings
答
您可以使用switch语句:
switch(op20raw) { case "R288319": op20 = op20A; break; case "R288320": op20 = op20D; break; etc.. }