Initializing a 'var' to null

前端 未结 2 1968
春和景丽
春和景丽 2020-12-18 20:13

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

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


        
相关标签:
2条回答
  • 2020-12-18 20:32

    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.

    0 讨论(0)
  • 2020-12-18 20:43

    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.

    0 讨论(0)
提交回复
热议问题