zoukankan      html  css  js  c++  java
  • readonly const关键字

    readonly 关键字与 const 关键字不同。 const 字段只能在该字段的声明中初始化。 readonly 字段可以在声明或构造函数中初始化。 因此,根据所使用的构造函数,readonly 字段可能具有不同的值。 另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数,如下例所示:

     
     public static readonly uint timeStamp = (uint)DateTime.Now.Ticks; // 运行时的时间赋值给static readonly字段。
     
     
    1. 用readonly的地方大部分要用static,即static readonly。 不加static的readonly字段是实例字段,非常不好理解。
    2. readonly字段可以在声明时初始化,也可以在构造函数里初始化。相应的static readonly在声明时或者静态构造函数里初始化。
    3. 对应上一条,const 字段只能在该字段的声明中初始化。
    4. const 字段为编译时常数,而 readonly 字段可用于运行时常数。
        const类似于C++里的define/宏定义,编译阶段进行字面上的替换。而readonly字段是维持一个对字段的引用,所以更加保险。比如一个应用程序用的是另一个assembly里的const,如果这个assembly里的const变了,应用程序里的const并不能及时更新,因为编译时已经进行了字面替换,除非重新编译获取最新的值。
    5. 静态常量只能被声明为简单的数据类型(int以及浮点型)、枚举、布尔或者字符串型,而动态常量则除了这些类型,还可以修饰一些对象类型。
  • 相关阅读:
    ....
    CodeForces 375A(同余)
    POJ 2377 Bad Cowtractors (最小生成树)
    POJ 1258 AgriNet (最小生成树)
    HDU 1016 Prime Ring Problem(全排列)
    HDU 4460 Friend Chains(bfs)
    POJ 2236 Wireless Network(并查集)
    POJ 2100 Graveyard Design(尺取)
    POJ 2110 Mountain Walking(二分/bfs)
    CodeForces 1059B Forgery(模拟)
  • 原文地址:https://www.cnblogs.com/dirichlet/p/3266029.html
Copyright © 2011-2022 走看看