C# 动态比较异常

c# dynamic compare exception

我可以使用 dynamiclongint 进行比较。 但我无法使用 dynamic.

ulongint 进行比较

C# 动态错误?

无异常样本

long a = 10000;
int b = 10;

dynamic c = a;
dynamic d = b;

if (c <= d)
    MessageBox.Show("c");
else
    MessageBox.Show("d");

异常样本

ulong a = 10000;
int b = 10;

dynamic c = a;
dynamic d = b;

if (c <= d) <-Exception
    MessageBox.Show("c");
else
    MessageBox.Show("d");

你也不能比较 ulongint 没有动态。这是真的,因为 ulong 没有到其他整数类型的隐式转换。

如果你尝试过,你会得到这个编译时错误:

Operator '<=' cannot be applied to operands of type 'ulong' and 'int'   

这不是 C# 动态中的错误。这就是语言的设计方式。参考 Operator “>” cannot be applied to type 'ulong' and 'int' 了解更多信息