Почему этот C# не кодирует компиляцию?

Я не уверен, что вы подразумеваете под «Мое беспокойство заключается в том, что, если лямбда не работает, я хочу, чтобы служба продолжала работать». Я бы предположил, что с помощью кода вы можете обработать любую возможную ошибку при выполнении лямбды, а затем зарегистрировать ее произвольным образом или просто отпустить, и она будет зарегистрирована в cloudwatch. В любом случае вы можете настроить будильник и получать электронную почту, когда что-то идет не так. Это более гибкий и настраиваемый режим, но, похоже, вам не нужно делать что-то слишком сложное.

11
задан Andrew Hare 6 May 2009 в 10:22
поделиться

4 ответа

Это происходит потому, что компилятор пытается оценить оператор справа налево. Это означает, что он видит 1.0 и решает, что он двойной (не двойной?), А затем он видит ноль .

Так что явно не существует неявного преобразования между double и null (на самом деле не существует неявного преобразования между Struct и null ).

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

double? test = true ? null : (double?) 1.0;    // 1
double? test = true ? (double?)null : 1.0;     // 2
double? test = true ?  default(double?) : 1.0; // 3
double? test = true ? new double?() : 1.0;     // 4
28
ответ дан 3 December 2019 в 01:21
поделиться
double? test = true ? (double?)null : 1.0;

будет работать. Это потому, что нет преобразования первого типа выражения ( null ) в тип второго выражения ( double ).

8
ответ дан 3 December 2019 в 01:21
поделиться

Левая часть присваивания не используется при определении типа выражения?:.

В б? A: B , типы A и B должны быть либо одинаковыми, либо один должен быть неявно конвертируемым в другой.

4
ответ дан 3 December 2019 в 01:21
поделиться

Поскольку компилятор не может выяснить, что для null и 1.0, чтобы быть совместимыми, значения должны быть приведены к удвоению ?. Это должно быть явно указано.

double? test = true ? (double?) null : 1.0;
2
ответ дан 3 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: