zoukankan      html  css  js  c++  java
  • 常数与字段 CLR学习第七课 狼

    一、const:常数,字段在编译时,直接把值嵌入到使用它的程序集中,就是说,如果只改名常数定义的程序集中常数的值,而不重新编译整个程序,那么以前引用该常数的程序集中该常数是保持以前的值,而不是重新编译后的值(俗称:版本问题)。

    二、字段:CLR支持有类型(静态)字段、实例字段(非静态);同时有分为只读字段(加上readonly)和读写字段;

    静态字段,系统在该类型被加载进入一个应用程序域时,动态分配内存。通常发生在引用该类型的方法第一次被jit编译时。

    实例字段,系统在该类型的实例被构造时动态为其分配内存。

    三、只需将一个字段申明为 静态只读(static readonly)字段即可以解决const带来的本本问题。因为每次调用该字段static都要重新引用静态字段所在程序集的值。并且被申明为readonly,则其只是能读取,不能写。

    四、实例只读字段只能在构造器内赋值(构造器在对象初次创建时被执行,且只执行一次;其值可以被多次赋值);

    静态只读字段,只能在静态构造器内赋值,静态构造器在该类型初次被引用时执行。

    如:     public readonly String name = "why";只能在下面的构造器中赋值

    public Class1( string n)
     {
      //
      //TODO: 在此处添加构造函数逻辑
      //
            this.name = n;

     };

      static readonly int sn = 0;只能在下面的构造器中赋值

         static Class1()
        {
            sn = 10;
            
        }

    只能在对于的构造器中赋值否则不能通过编译。

  • 相关阅读:
    C#中虚方法与抽象方法的区别
    关于计算同一个用户购买日期间隔查询语句
    pandas 讲数据分组之后保留前N行方法
    关于Mysql隐式转化及注意事项与cast函数运用
    Mysql 去重
    记一个pandas 分组之后.head()返回的数据问题
    Failed to introspect Class xxxx
    golang 推荐学习记录
    Java内存区域
    Struts2中采用Json返回List对象数据为空解决方案
  • 原文地址:https://www.cnblogs.com/gowhy/p/2009100.html
Copyright © 2011-2022 走看看