Есть ли способ объявить унарный оператор, такой как '! ??'Как я могу объявить новый оператор «! ??» (тестовый объект не равен нулю)
Я представляю себе что-то вроде этого (не работает код)
public bool operator !??<T> (this <T> item) {
return item != null;
}
так я хотел бы использовать его как такой
// day is a value and might possibly be null
string greeting = name !?? "hello there " + name;
Я считаю себя часто приходится делать эту неловкость
// day is a value and might be null
string greeting = day != null ? "hello there " + name : "";
Это довольно ясно в примере, который я предоставил, но когда вы используете геттер/сеттер s для моделей просмотра, он немного запутывается, чтобы смотреть на него, и повышает вероятность пропущения логической ошибки. Таким образом:
public DateTime? SearchDate {
get { return _searchDate; }
set { _searchDate = value != null ? value.Value : value; }
}
Это совершенно невозможно. Однако вы хотите, чтобы C# 6 '? .'. – SLaks
# EricLippert уже изобрел такой оператор в своем C# 6.0 или что-то еще. – AgentFire
Кроме того, это будет оператор _binary_. – SLaks