Mam funkcji z wieloma jeśli'S (nie jest to rzeczywisty kod)C#: Expression
if(n == 1)
m = 1;
if(n == 2)
m = 2;
if(n == 3)
m = 3;
Zamiast tego chciałem zrobić uczynić je wszystkie do: Wyrażenie:
(n == 1) ? m = 1;
Ale mówi, że spodziewa się jego „:”
jestem zaznajomiony z: ekspresja od C++, gdzie można po prostu napisać:
(n == 1) ? m = 1 : 0;
Ale 0 nie bierze tutaj. To jest absurdalne pytanie i nie mogłem znaleźć odpowiedzi w google, ponieważ ignoruje "?:" Jako słowo.
ODPOWIEDŹ: szkoda, odpowiedź była w komentarzach. W tym wyrażeniu nie ma sposobu, aby "nic nie robić" i powinienem użyć if-else lub switch. dzięki.
Dlaczego nie 'm = n'? – Pubby
Tak, Google nie może mieć znaku zapytania. Nazywa się to operatorem trójskładnikowym. – DOK
Instrukcja "if" * wykonuje instrukcję, jeśli warunek jest spełniony *. Wyrażenie warunkowe * wybiera wyrażenie do oceny, czy warunek jest spełniony *, aw C# it * musi coś zrobić z tym wyrażeniem *. (W przeciwieństwie do C++, gdzie wyrażenie może być wykonane ze względu na efekty uboczne.) Miksujesz oba style w dziwny sposób; nie rób tego. Zwykle jest to niemożliwe, a kiedy jest to możliwe, jest bardzo mylące. Użyj przełącznika lub if-else; to jest o wiele bardziej czytelne. –