Почему компилятор не может автоматически преобразовать значения в это выражение правильно?C# Преобразование типа термического выражения
var input = "Hello";
object x = string.IsNullOrEmpty(input) ? input : DBNull.Value;
//could try this too and get similar compile time error
object x2 = string.IsNullOrEmpty(input) ? 1 : input;
Я понимаю, что DBNull.Value нельзя отнести к строке; Тем не менее, мне любопытно, почему он не может быть объединен с объектом, потому что результат просто сохраняет ссылку. Если вы разместите (object)
перед DBNull.Value, он будет компилироваться и работать просто отлично.
Все ответы на gdoron являются отсутствующими точки, кроме. Это не вопрос «эй, помоги мне составить этот компилятор». Это больше спрашивает, почему компилятор C# не способен или не хочет смотреть на тип переменной, назначаемой по сравнению с типами переменных во 2-м и 3-м параметрах. –
Нашел этот ответ на несколько несвязанный вопрос http://stackoverflow.com/a/2215959/186359 Я думаю, что это в основном доказывает, что при оценке выражения вы не можете добавлять информацию (тип переменной назначения). Я думаю, что это может быть реальный ответ. –