【发布时间】:2013-04-24 12:37:03
【问题描述】:
首先,这个问题不是this question 的重复。除了标题之外,它绝对没有任何共同点。
现在...
在 C# 中,考虑以下情况:
int i = (int)10.0;
const double D = 10.0;
float f = (float)d;
enum Foo : int
{
FIRST_ITEM = 0
}
int i = (int)Foo.FIRST_ITEM;
在哪些情况下类型转换会在运行时发生?目前,我对我的程序的性能有点着迷,想知道这是否会产生任何(无论多么小)影响。
【问题讨论】:
-
过早的微优化是万恶之源。构建一个具有清晰架构的工作应用程序,在其上运行分析器并仅优化值得优化的部分。
-
这是常量的编译时间。如果您想确定,请使用
Reflector检查输出代码。 -
谢谢,@MatthewWatson。对于将其标记为重复的人:请也检查问题/答案的内容;不仅仅是标题。
-
这完全取决于你的编译器。您正在使用什么环境以及什么编译标志?通常,编译时值常量的大多数“强制转换”都是静态完成的。对于那些尖叫的复制品,请注意他问的是实际演员表何时完成,而不是检查实际演员表是否有效的时间。
标签: c# casting enums runtime compile-time