Well,你的变量i
and prevSpec_OilCons
,如果不在任何地方使用,将会被优化掉,但不是你的循环。
因此,如果您的代码如下所示:
static void Main(string[] args)
{
int[] TestRunTime = { 1, 2, 3 };
int i = 0;
for (int j = 0; j < TestRunTime.Length; j++)
{
}
double prevSpec_OilCons = 0;
Console.WriteLine("Code end");
}
under ILSpy http://ilspy.net/这将是:
private static void Main(string[] args)
{
int[] TestRunTime = new int[]
{
1,
2,
3
};
for (int i = 0; i < TestRunTime.Length; i++)
{
}
Console.WriteLine("Code end");
}
由于循环有几个语句,例如比较和增量,因此它可以用于实现somewhat短暂的延迟/等待期。 (虽然这样做不是一个好的做法).
考虑下面的循环,它是一个空循环,但执行起来会花费很多时间。
for (long j = 0; j < long.MaxValue; j++)
{
}
你的代码中的循环并不是死代码,就死代码而言,以下是死代码,将被优化掉。
if (false)
{
Console.Write("Shouldn't be here");
}
该循环甚至不会被 .NET 抖动消除。基于此answer https://stackoverflow.com/a/7288572/961113