可以将动态变量视为"int"溢出吗?

Jos*_*eph 9 c# c#-4.0

假设您将dynamic变量视为int(值小于int.MaxValue).

在应用程序的某个时刻,动态值会增加并超过"int"值.

应用程序会崩溃或将其(转换)视为一个long

Eri*_*ert 8

假设您将动态变量视为int(值小于int.MaxValue).

通过"被视为int"我假设你的意思是"包含运行时类型int的值".

在应用程序的某个时刻,动态值会增加并超过"int"值.

好.怎么样?您省略了问题中最重要的部分.价值是如何增加的?

应用程序是否会崩溃或将其(转换)视为一个长期?

有时它会崩溃,有时结果会很长,有时候结果会是双倍的,或者十进制的,有时候int会缠绕.既然你还没有说过如何增加价值,就不可能回答你的问题了.

通常,动态规则是动态代码将在运行时运行,因为如果编译时类型已知,则等效的非动态代码将表现出来.如果编译器会给出错误,那么运行时会给出错误.如果编译器会添加两个int来生成第三个,那么运行时将添加两个int以生成第三个.如果编译器会添加一个int和一个double来生成一个double,那么运行时将添加一个int和一个double来生成一个double.等等.


ang*_*son 7

易于在LINQPad中测试:

void Main()
{
    dynamic i = int.MaxValue - 10;
    i += 15;
    Console.WriteLine(i.GetType());
    Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)

输出:

typeof (Int32) 
-2147483644