为什么 C# 编译器认为我在使用可为空的长整型时尝试使用字节重载?



以下代码

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

将导致两个参数出现以下错误消息:

  • "参数 1:无法从'长'转换为'字节'"
  • "参数 2:无法从'long?'转换为'sbyte'">

明白为什么这是一个错误,我知道如何解决错误。

我的问题是为什么编译器在这种情况下试图选择Math.Min(sbyte, sbyte)重载(即使第一个参数不可为空(?

它找不到正确的重载,因此它默认为 Math.cs 中的第一个重载,恰好是public static sbyte Min(sbyte val1, sbyte val2)

最新更新