c# 编译器优化的功劳?与泛型有关的代码的疑惑

  在我设计的一部分代码中,有自定义序列化对象的代码如下:

代码
for int  i  =   0 ; i  <   this .Entities.Length; i ++  )
{
    
// 这里当T是结构类型时还是可以正常处理,实际上结构体是不能与null进行比较的
    
// 或许当编译系统编译的时候把判断条件优化掉了,也就是说不会有this.Entities[ i ] == null的判断
     if this .Entities[ i ]  ==   null  )
    {
        stream.WriteByte( 
0  ); // null
         continue ;
    }
    
else
    {
        stream.WriteByte( 
1  ); // not null
        WriteEntity( stream,  this .Entities[ i ] );
    }
}

 

其中Entities的定义为public T[] Entities { get; set; },当我序列化类的实例或结构的实例均可正常工作。

暂时找不出原因,只能做上述的猜测。

你可能感兴趣的:(编译器)