zoukankan      html  css  js  c++  java
  • C#:那些不许被修改的只读量

    常量:表示常量值的类的成员。

    • 常量表示的值能够在编译的时候计算出来用于代替常量名
    • 常量属于类型,而不属于实例。所以没有实例常量一说,想要表示"实例常量",我们可以用实例只读字段来表示
    • 我们还学过本地常量(局部常量),要和常量区分开

    常量的用途有哪些?

    • 在类中声明常量来表示类型中的一些永远不会改变的数据,在我们想用的使用直接拿来使用。
    //
    // 摘要:
    //     表示 32 位带符号整数。
    [ComVisible(true)]
    public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<Int32>, IEquatable<Int32>
    {
        //
        // 摘要:
        //     表示 System.Int32 的最大可能值。 此字段为常数。
        public const Int32 MaxValue = 2147483647;
        //
        // 摘要:
        //     表示 System.Int32 的最小可能值。 此字段为常数。
        public const Int32 MinValue = -2147483648;
    }
    

    上面摘自int类型的API,我们可以看到int类型能够表示的最大值是永远不会改变的,对于这样的数据我们正好就可以使用常量

    • 常量能够增加可读性和执行效率
    //
    // 摘要:
    //     为三角函数、对数函数和其他通用数学函数提供常数和静态方法。
    public static class Math
    {
        //
        // 摘要:
        //     表示圆的周长与其直径的比值,由常数 π 指定。
        public const double PI = 3.1415926535897931;
    }
    

    对于圆周率Π来说,我们不希望在每一次使用到Π的值的时候,都写一遍3.14....;如果将3.14....声明成一个常量,那么以后在程序中使用到它的时候就会很方便。
    另外,常量在编译的时候就会将常量后面的值拿出来代替常量名,它并不会像字段那样占用内存空间,所以使用常量要比定义那些只读字段效率要高很多。

    常量的声明: 修饰符 const 类型 常量名(一般全部用大写英文字母) = 常量或常量表达式;

    class Utility
    {
        private const string SERVICEURL = "https://wwww.waxpy.com/upload/file";
    }
    

    各种"只读"的使用场景

    • 为了提高程序执行效率,在只读字段、只读属性、常量中,优先选择常量
    • 为了防止对象的数据被修改,使用只读字段
    • 为了向外暴露不允许修改的数据,使用只读属性(静态只读属性、实例只读属性)
    • 常量能表示各种值类型,但是不能声明称结构体或者引用类型;而使用静态只读字段就没有这点限制。
      静态只读解决常量短板

    以上是对常量和只读量的总结,记录下来,以便以后查阅。

  • 相关阅读:
    CF763C Timofey and Remoduling
    CF762E Radio Stations
    CF762D Maximum Path
    CF763B Timofey and Rectangles
    URAL1696 Salary for Robots
    uva10884 Persephone
    LA4273 Post Offices
    SCU3037 Painting the Balls
    poj3375 Network Connection
    Golang zip压缩文件读写操作
  • 原文地址:https://www.cnblogs.com/bigbosscyb/p/13715663.html
Copyright © 2011-2022 走看看