zoukankan      html  css  js  c++  java
  • Effective C#高效编程(02:常量)

    前面写过一篇关于常量的文章:const与readonly,C#中的常量有两种定义:const与readonly。

    const:编译期常量

    readonly:运行时常量

    首先分别定义一个常量:

    1 public const int CurrentYearConst = 2013;
    2 
    3 public static readonly int CurrentYearReadonly = 2013;

    1. const可在方法中声明,而readonly不可以。

      在方法中声明readonly变量时,系统提示:修饰符“readonly”对该项无效

      const不支持通过new来赋值,并且只支持数字和字符串。

    2. 编译不同

    1 if (CurrentYearConst == DateTime.Now.Year) { }
    2 if (2013 == DateTime.Now.Year) { }
    3 if (CurrentYearReadonly == DateTime.Now.Year) { }

    第一行与第二行代码会编译成等效的IL,第三行代码编译成IL时,仍然为readonly变量。

    这就造成了前一篇文章中所提到的,switch()可以使用const变量,不可以使用readonly变量

    3. 性能与灵活性

    从第二点中我们可以预见,const的性能会优于readonly,但是通过这种方式提升的性能几乎可以忽略不计,但是却丧失了灵活性

    在性能几乎相当的情况下,灵活性就成了决定条件了,所以尽量使用readonly,而不是const

  • 相关阅读:
    404. Sum of Left Leaves
    400. Nth Digit
    42. Trapping Rain Water
    154. Find Minimum in Rotated Sorted Array II
    [USACO4.2]草地排水Drainage Ditches
    [NOIP2010提高组]关押罪犯
    [洛谷P1580]yyy loves Easter_Egg I
    [洛谷P1144]最短路计数
    [洛谷P1346]电车
    [codevs1243]网络提速
  • 原文地址:https://www.cnblogs.com/zhuhc/p/3455844.html
Copyright © 2011-2022 走看看