以下代码
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)