zoukankan      html  css  js  c++  java
  • C#学习笔记——readonly修饰符、const成员常量、本地常量、常量与静态量

    readonly修饰符

    字段可以用readonly修饰符声明。其作用类似将字段声明为const,一旦设定不能改变。

    readonly和const的区别:

    1. const只能在声明时初始化,而readonly可以在任意位置设置值。(字段声明语句类似const。类的任何构造函数。如果是static字段,初始化必须在静态构造函数中完成。)
    2. const字段的值必须在编译时决定,而readonly字段的值可以在运行时决定。
    3. const的行为总是静态的,而对于readonly字段以下两点是正确的:1它可以是实例字段,也可以是静态字段。2它在内存中有存储位置。

    例:

        class Shape
        {
            readonly double PI = 3.1416;
            readonly int NumberOfSide;//边的数量
    
            //矩形
            public Shape(double side1, double side2)
            {
                NumberOfSide = 4;
            }
    
            //三角形
            public Shape(double side1, double side2, double side3)
            {
                NumberOfSide = 3;
            }
    
        }

    PI在声明时初始化。

     NumberOfSide在构造函数中初始化。

    成员常量

    被声明在类中。声明时初始化。

    class MyClass {
        const int a = 1;
    }

    本地常量

    本地常量一旦被初始化,它的值不能改变。

    特征:

    1. 常量在声明时必须初始化。
    2. 常量在声明后不能改变。

    常量的声明与字段或变量的声明相同,除了以下内容:

    1. 在类型前增加关键字const。
    2. 必须有结构化语句。
    const Type Identifier = value;

    例:

            public void Display()
            {
                const double PI = 3.1415;
    
                for (int i = 0; i <= 5; i++)
                {
                    double area = i * i * PI;
                    Console.WriteLine("半径为{0}的圆,面积为{1}", i, area);
                }
            }

    这个方法结束,这个常量失效 


    常量与静态量

    与真正的静态量不同,常量没有自己的存储位置,而是在编译时被编译器替换。

    using System;
    
    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("PI = {0}", T.pi);
            }
    
        }
        class T
        {
            public const double pi = 3.1415;
        }
    }
    

    常量pi可以在类外使用 

  • 相关阅读:
    OCP-1Z0-053-V12.02-622题
    OCP-1Z0-053-V12.02-501题
    Flex实现查询和重置
    闪回事务处理回退
    闪回数据归档测试
    闪回数据归档
    OCP-1Z0-053-V12.02-166题
    VC-摄像头控制SDK源码
    MFC 的 Picture Control 加载 BMP/PNG 图片的方法
    OCP-1Z0-051-V9.02-25题
  • 原文地址:https://www.cnblogs.com/AlinaL/p/12852143.html
Copyright © 2011-2022 走看看