美文网首页
2020-07-22 为什么不在定义的时候初始化字段值

2020-07-22 为什么不在定义的时候初始化字段值

作者: 敉霞 | 来源:发表于2020-07-22 19:21 被阅读0次

不在定义的时候初始化字段的值,是因为如果有多个构造器,那么il生成代码的时候会给每一个构造器都进行字段初始化。标记为const或者static的则不会。

using System;
public class C {
    int a=5;
    int b=3;
    
    static int mm=5;
    
    const int mmm=4;
    
    public C()
    {
        
    }
    
    public C(int a)
    {
        
    }
    
    public void M() {
    }
}

下面是部分il代码

 .method public hidebysig specialname rtspecialname 
        instance void .ctor () cil managed 
    {
        // Method begins at RVA 0x2050
        // Code size 23 (0x17)
        .maxstack 8

        IL_0000: ldarg.0
        IL_0001: ldc.i4.5
        IL_0002: stfld int32 C::a
        IL_0007: ldarg.0
        IL_0008: ldc.i4.3
        IL_0009: stfld int32 C::b
        IL_000e: ldarg.0
        IL_000f: call instance void [System.Private.CoreLib]System.Object::.ctor()
        IL_0014: nop
        IL_0015: nop
        IL_0016: ret
    } // end of method C::.ctor


.method public hidebysig specialname rtspecialname 
        instance void .ctor (
            int32 a
        ) cil managed 
    {
        // Method begins at RVA 0x2050
        // Code size 23 (0x17)
        .maxstack 8

        IL_0000: ldarg.0
        IL_0001: ldc.i4.5
        IL_0002: stfld int32 C::a
        IL_0007: ldarg.0
        IL_0008: ldc.i4.3
        IL_0009: stfld int32 C::b
        IL_000e: ldarg.0
        IL_000f: call instance void [System.Private.CoreLib]System.Object::.ctor()
        IL_0014: nop
        IL_0015: nop
        IL_0016: ret
    } // end of method C::.ctor

相关文章

  • 2020-07-22 为什么不在定义的时候初始化字段值

    不在定义的时候初始化字段的值,是因为如果有多个构造器,那么il生成代码的时候会给每一个构造器都进行字段初始化。标记...

  • Effective Java(3rd)-Item83 明智地使用

      延迟初始化是延迟字段的初始化,直到需要它的值。如果不需要该值,则不会初始化字段。这种技术既适用于静态字段,也适...

  • 这个readonly干什么用呢

    readonly用于字段,意思是:字段只能在初始化时候赋值,在随后的使用中,字段的值不能再改变。举个列子

  • Golang学习笔记-结构体

    定义结构体的格式如下: 初始化结构体的格式如下,使用key-value的形式初始化时忽略的字段为零值。 不管结构体...

  • 类的加载机制

    类不被初始化的情况 对于静态字段,只有直接定义这个字段的类才会变初始化,子类引用父类的静态字段不会导致子类的初始化...

  • Elasticsearch mappings

    dynamic true:插入值的字段没在mappings中定义,会新增字段false:插入值的字段没在mappi...

  • Salesforce 小知识 - 必需字段

    将字段定义为“必需” 当我们为对象设置字段的属性时,我们需要让某些字段在建立记录的时候必需有值,比如定义一个“地址...

  • 可选项Optional

    1、初始化值定义 /****初始化值定义*/func demo1() {//1.原始的可选项定义//none 没有...

  • Odin Inspector 系列教程 --- Max Valu

    Max Value Attribute:用于基本字段。它将字段的值限制为最大值。使用此定义字段的最大值。 更多教程...

  • Odin Inspector 系列教程 --- Min Valu

    Min Value Attribute用于基本字段。它将字段的值限制为最小值。使用此定义字段的最小值。 更多教程内...

网友评论

      本文标题:2020-07-22 为什么不在定义的时候初始化字段值

      本文链接:https://www.haomeiwen.com/subject/qhitlktx.html