zoukankan      html  css  js  c++  java
  • C#中的常量的使用

           常量在编译器确定,并且不会改变,所以常量的类型必须是基础数据类型(primitive types)Boolean, Char, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, and String。当然也有特殊情况,即给定义非基础数据的常量的时候赋值null。

              常量被当做静态变量。常量的定义导致元数据(metadata)的创建。当我们的代码中使用到常量的时候,有IL寻找metadata中的常量,因为常量被

    硬编码,所以不需要在运行时分配内存。同时也意味着他没有很好的跨程序集的能力,比如说对于一个已经发布出去的一个程序的DLL,你不能通过更新DLL来

    改变DLL中的常量。所以常量是比较适合放 比如π的值,光速等不会变化的东西。如果你想放只读的,又可能会改的可以使用readonly关键字

    一句话总结:常量就是在编译器就被硬编码到程序中的一种数据类型.

    对于readonly是字段的修饰符

    image

          需要注意的是:  readonly  修饰的变量,其变量的地址是不能更改的,但其地址所指向的值却可以改变。

    public sealed class AType {
    // InvalidChars must always refer to the same array object
    public static readonly Char[] InvalidChars = new Char[] { 'A', 'B', 'C' };
    }
    public sealed class AnotherType {
    public static void M() {
    // 可以编译通过

    AType.InvalidChars[0] = 'X';
    AType.InvalidChars[1] = 'Y';
    AType.InvalidChars[2] = 'Z';
    // 不被编译通过

    AType.InvalidChars = new Char[] { 'X', 'Y', 'Z' };
    }
    }

  • 相关阅读:
    【51nod】2590 持续讨伐
    【51nod】2589 快速讨伐
    【51nod】2606 Secondary Substring
    【LOJ】#3098. 「SNOI2019」纸牌
    【洛谷】P4202 [NOI2008]奥运物流
    【LOJ】#3103. 「JSOI2019」节日庆典
    【LOJ】#3102. 「JSOI2019」神经网络
    【洛谷】P5348 密码解锁
    【洛谷】P4883 mzf的考验
    【LOJ】#3101. 「JSOI2019」精准预测
  • 原文地址:https://www.cnblogs.com/facingwaller/p/1913325.html
Copyright © 2011-2022 走看看