Является ли класс ссылочным типом, а структура - типом значения?

Причина, по которой вышеприведенный оператор не работает, был предоставлен другими пользователями и фактически не ответил на мой истинный вопрос.

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

Если бы я должен был изменить указанный выше оператор:

int a = 5;
int b = 10;
int result = a == b ? doThis() : doThat(); 

private int doThis()
{
    MessageBox.Show("Did this");
    return 0;
}
private int doThat()
{
    MessageBox.Show("Did that");
    return 1;
}

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

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

int result = a == b ? doThis() : doThat();

if (result == 0)
   MessageBox.Show("You called doThis()!");

Теперь этот код абсолютно бессмыслен и может быть легко выполнен с помощью If If Else , но я просто хотел знать, можно ли это сделать, и что вам нужно сделать, чтобы заставить его работать.

Теперь, когда я знаю, что вы можете эффективно возвращать любой тип в этих методах, это может стать немного более полезно. Это может считаться «плохой кодирующей практикой», но может стать очень полезным в ситуациях, в которых он никогда не был МОЛОДЕЖИ.

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

UserPrivileges result = user.Group == Group.Admin ? GiveAdminPrivileges() : GiveUserPrivileges();

private UserPrivileges GiveAdminPrivileges()
{
      //Enter code here
      return var;
}
private UserPrivileges GiveUserPrivileges()
{
      //Enter code here
      return var;
}

Конечно, это можно сделать с помощью инструкции If, но я думаю, что использование Тернарного оператора для других целей делает программирование забавным. Теперь это может быть не так эффективно, как оператор If Else, и в этом случае я бы никогда не использовал это.

0
задан Nikhil Agrawal 20 August 2012 в 15:40
поделиться