Question

Is there any difference in runtime performance between the following variable initializations?

var    x = null as object;
var    x = (object) null;
object x = null;
Was it helpful?

Solution

I believe no, since there is no difference in compiled IL.

var    x = null as object;
var    x1 = (object)null;
object x2 = null;

gets compiled to

IL_0001:  ldnull      
IL_0002:  stloc.0     // x
IL_0003:  ldnull      
IL_0004:  stloc.1     // x1
IL_0005:  ldnull      
IL_0006:  stloc.2     // x2

You can see all the locals are initialized to null using ldnull opcode only, so there is no difference.

OTHER TIPS

First of all: No, I believe these three calls are essentially equivalent.

Secondly: Even if there was any difference between them, it would surely be so minuscule that it would be completely irrelevant in an application.

This is such a tiny piece of any program, that focusing on optimization here and in similar situations, will often be a waste of time, and might in some cases make your code more complicated for no good reason.

There is a longer interesting discussion about this on the programmers.stackexchange site.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top