I've been through a few questions over the network about this subject but I didn't find any answer for my question, or it's for another language or it doesn't answer totally (dead code is not useless code) so here's my question:
Is (explicit or not) useless code ignored by the compiler?
For example, in this code:
double[] TestRunTime = SomeFunctionThatReturnDoubles; // A bit of code skipped int i = 0; for (int j = 0; j < TestRunTime.Length; j++) { } double prevSpec_OilCons = 0;
will the for loop be removed?
I use .net4.5 and vs2013
The background is that I maintain a lot of code (that I didn't write) and I was wondering if useless code should be a target or if I could let the compiler take care of that.
Yes: for unused static functions.
Answer: Comments are the statements that are ignored by the compiler.
Well, your variables i
and prevSpec_OilCons
, if not used anywhere will be optimized away, but not your loop.
So if your code looks like:
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 it will be:
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"); }
Since the loop has couple of statements, like comparison and increment, it could be used for implementing somewhat short delay/wait period. (although not a good practice to do so).
Consider the following loop, which is an empty loop, but it will take a lot of time to get executed.
for (long j = 0; j < long.MaxValue; j++) { }
The loop in your code, is not a dead code, as far as dead code is concerned, the following is a dead code, and will be optimized away.
if (false) { Console.Write("Shouldn't be here"); }
The loop, will not even be removed by the .NET jitters. Based on this answer
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With