c#动态比较异常

c#动态比较异常,c#,dynamic,C#,Dynamic,我可以使用dynamic将long与int进行比较。 但是我不能用动态将ulong与int进行比较 动态错误 无例外样品 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 =

我可以使用dynamiclongint进行比较。 但是我不能用动态ulongint进行比较

动态错误

无例外样品

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");
长a=10000;
int b=10;
动态c=a;
动态d=b;

如果(c您也不能在没有动力学的情况下将
ulong
int
进行比较。这是正确的,因为
ulong
没有到其他积分类型的隐式转换

如果您尝试,将出现以下编译时错误:

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

Operator'这不是C#dynamic中的一个bug。这是语言的设计方式。有关更多信息,请参考

如果答案充分解决了您的问题,您可能希望将其作为答案。您可以阅读关于如何做到这一点或