2016-01-22 5 views
1

Учитывая этот вопрос shorthand If Statements: C#C# сокращение, что не так с этим?

Что не так?

int userID; 
    Int32.TryParse(request.userID, out userID); 

    userID > 0 ? user = DuoUser.LoadUser(userID): ; 

Это дает ошибку:

only assignment call increment decrement and new object expressions can be used as a statement 

Насколько я могу видеть, что это должно работать, но что-то не так?

EDIT:

Я также попытался:

int userID = 0; 

    userID > 0 ? user = DuoUser.LoadUser(userID): null; 

Но она по-прежнему дает ту же ошибку.

+0

Вы имеете присвоить значение то, как: 'пользователя = ID_пользователь> 0? DuoUser.LoadUser (userID):; 'Оператор похож на' variable - if-then-else' –

ответ

6

Изменение последней линии:

user = userID > 0 ? DuoUser.LoadUser(userID) : null ; 

Ошибка сообщение правильно. Вы должны присвоить результат тернарного оператора чему-то.

UPDATE

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

Тройная оператор просто говорит

something = condition ? result if condition is true : otherwise this result if false. 

Вы можете сделать это в качестве альтернативы:

if (userID > 0) 
    user = DuoUser.LoadUser(userID); 

, которые некоторые могут найти легче читать в любом случае.

+0

Вы не имеете в виду 'user = userID> 0? DuoUser.LoadUser (userID): null; '? –

+0

Да - я заметил это и уже исправил его. Мое редактирование и ваш комментарий должны были появиться примерно в одно и то же время. –

+0

BTW: существует ли общее мнение о тройном операторе с точки зрения чистого кода, читаемости кода и рефакторинга кода? –

1

Вы можете попробовать это:

userID= userID > 0 ? DuoUser.LoadUser(userID): null; 
+0

Результат должен быть присвоен 'user' not' userID' –

1

Тройная оператор проверяет условие. Он сравнивает два значения. Он производит третье значение, которое зависит от результата сравнения. Это может быть выполнено с помощью if-утверждений или других конструкций.

Так что ваш код становится

int userID; 
    Int32.TryParse(request.userID, out userID); 
    userID = userID > 0 ? user = DuoUser.LoadUser(userID): 0; 
+0

Результат должен быть присвоен 'user' not' userID' –

Смежные вопросы