Следующий код
long? long1 = 1;
long? long2 = 2;
Math.Min(long1.Value, long2);
приведет к следующему сообщению об ошибке обоих аргументов:
- «Аргумент 1: невозможно преобразовать из« long »в« sbyte »»
- "Аргумент 2: невозможно преобразовать из 'long?'to 'sbyte' "
Я понимаю, почему это ошибка, я знаю, как ее устранить.
У меня вопрос, почему компилятор пытаетсявыбрать перегрузку Math.Min(sbyte, sbyte)
в этом случае (даже если первый аргумент не обнуляемый)?