Никогда не предполагайте, что будут работать тривиальные 2 метода строки. Запись быстрого модульного теста является единственным способом предотвратить недостающий пустой тест, неуместный знак "минус" и/или тонкую ошибку обзора от кусания Вас, неизбежно когда у Вас есть еще меньше времени для контакта с ним, чем теперь.
?:
- это условный оператор , и лучший способ узнать - спросить здесь!
condition ? first_expression : second_expression;
Если условие истинно, вычисляется первое выражение и становится результатом; если false, второе выражение оценивается и становится результатом. Когда-либо вычисляется только одно из двух выражений.
Это чрезвычайно полезно для удобства чтения присваиваний, когда все выражение относительно короткое:
string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname
Это намного проще и быстрее, чем:
string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
name = user.Nickname;
}
?
является встроенным оператором- if
. Это означает, что если checkbox.Checked
имеет значение true
, то CharacterCasing.Upper
будет значением выражения, в противном случае CharacterCasing.Normal
будет.
Это работает так:
тип значение = условие? trueValue: falseValue;
, который является встроенным оператором if. "?" это код для if, ":" для else.
Между прочим. Когда вы изучаете C #, ознакомьтесь с ?? оператор Иногда это намного лучшая альтернатива?:.
Рассмотрим:
Console.WriteLine(user.LastName ?? "no last name provided");
vs:
Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
Между прочим, так получилось, что вы можете искать "?:" в Википедии и найти это.
Обратите внимание, что его также иногда называют тернарным оператором. , поскольку это единственный тернарный (3-аргументный) оператор в C-подобных языках.