假设您将dynamic变量视为int(值小于int.MaxValue).
在应用程序的某个时刻,动态值会增加并超过"int"值.
应用程序会崩溃或将其(转换)视为一个long?
假设您将动态变量视为int(值小于int.MaxValue).
通过"被视为int"我假设你的意思是"包含运行时类型int的值".
在应用程序的某个时刻,动态值会增加并超过"int"值.
好.怎么样?您省略了问题中最重要的部分.价值是如何增加的?
应用程序是否会崩溃或将其(转换)视为一个长期?
有时它会崩溃,有时结果会很长,有时候结果会是双倍的,或者十进制的,有时候int会缠绕.既然你还没有说过如何增加价值,就不可能回答你的问题了.
通常,动态规则是动态代码将在运行时运行,因为如果编译时类型已知,则等效的非动态代码将表现出来.如果编译器会给出错误,那么运行时会给出错误.如果编译器会添加两个int来生成第三个,那么运行时将添加两个int以生成第三个.如果编译器会添加一个int和一个double来生成一个double,那么运行时将添加一个int和一个double来生成一个double.等等.
易于在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