Сложное заявление - PullRequest
       14

Сложное заявление

1 голос
/ 22 марта 2012

Можно ли преобразовать этот оператор if в оператор в одну строку?

        if (value != DBNull.Value)
        {
            dic.Add(columnName);
        }
        else if (!skipNullValues)
        {
            dic.Add(columnName);    
        }

Ответы [ 4 ]

8 голосов
/ 22 марта 2012
if (value != DBNull.Value || !skipNullValues) dic.Add(columnName);
2 голосов
/ 22 марта 2012

Используйте логическое ИЛИ:

if (value != DBNull.Value || !skipNullValues)
   dic.Add(columnName);

Я бы оставил добавление на новой строке для ясности, хотя для такого простого утверждения, как это, вы, вероятно, можете снять фигурные скобки.Вы должны быть осторожны, если попытаетесь добавить больше логики в будущем, хотя, очевидно, в ветке if.

1 голос
/ 22 марта 2012
if (!(value == DBNull.Value && skipNullValues))
    dic.Add(columnName);
0 голосов
/ 22 марта 2012

Если вы отредактируете, чтобы указать, почему выделение одной строки поможет вам получить более подходящий ответ.Вот несколько различных подходов, которые вы могли бы использовать.

Во-первых, в одной строке, как вы просили:

if ((value != DBNull.Value) || (value == DBNull.Value && !skipNullValues)) { dic.Add(columnName); }

В качестве альтернативы вы можете использовать троичные операторы, если вам нужночто-то более компактное.

var result = (istrue) ? (return valIfTrue) : (return valIfFalse);

Более подробная информация о троичных операторах: http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx

Скорее всего (в зависимости от вашей ситуации) вам следует подумать о создании метода, подобного следующему:

public void AddColumnToDic(object value, string columnName) 
    bool skipNullValues = false; // todo: read from configuration
    if ((value != DBNull.Value) || (value == DBNull.Value && !skipNullValues))
    {
        dic.Add(columnName);
    }
}

и просто вызывайте его для каждого значения ячейки, с которым вы сталкиваетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...