Условное значение переменной - PullRequest
1 голос
/ 08 июля 2010

Я попытаюсь сделать это простым и быстрым .. Я никогда не пытался сделать это раньше, поэтому я немного растерялся .. Что я хочу сделать, так это иметь переменную строку (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 ]

6 голосов
/ 08 июля 2010

Ваше решение почти лучшее для двух или трех условий.

Я бы предпочел это, если их больше двух или трех:

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

string op20 = map[op20raw]; // assuming no erroneous raw strings
2 голосов
/ 08 июля 2010

Поскольку вы разветвляете свой код на основе одного значения переменной (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;
2 голосов
/ 08 июля 2010

Я бы предложил использовать конструкцию 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 голос
/ 08 июля 2010

Я бы предложил вам использовать словарь.

Это упростит ваш код поиска.

0 голосов
/ 08 июля 2010

Вы можете использовать оператор switch:

switch(op20raw)
{
  case "R288319":
  op20 = op20A;
  break;
  case "R288320":
  op20 = op20D;
  break;
etc..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...