• 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";
    }
    

    各种"只读"的使用场景

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

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

  • 相关阅读:
    vue动态组件
    服务端渲染和nuxt简单介绍
    nuxt Window 或 Document未定义解决方案
    知乎专栏开放性api
    小程序的一些坑
    搭建微服务器(续)
    调研pwa和sw
    mysql索引原理以及优化
    装饰器
    斐波那契数列和小青蛙跳跳跳问题
  • 原文地址:https://www.cnblogs.com/bigbosscyb/p/13715663.html
Copyright © 2020-2023  润新知