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