Почему компилятор C # думает, что я пытаюсь использовать перегрузку sbyte при использовании длинных значений nullable? - PullRequest
0 голосов
/ 08 июня 2018

Следующий код

long? long1 = 1;
long? long2 = 2;
Math.Min(long1.Value, long2);

приведет к следующему сообщению об ошибке обоих аргументов:

  • «Аргумент 1: невозможно преобразовать из« long »в« sbyte »»
  • "Аргумент 2: невозможно преобразовать из 'long?'to 'sbyte' "

Я понимаю, почему это ошибка, я знаю, как ее устранить.

У меня вопрос, почему компилятор пытаетсявыбрать перегрузку Math.Min(sbyte, sbyte) в этом случае (даже если первый аргумент не обнуляемый)?

1 Ответ

0 голосов
/ 08 июня 2018

Не удается найти правильную перегрузку, поэтому по умолчанию используется первая в Math.cs, которая равна public static sbyte Min(sbyte val1, sbyte val2)

...