C#常量

江枫思渺然 提交于 2020-02-05 05:08:42

常量就是其值固定不变的量,值类型或引用类型都可以作为常量。在C#中,常量可以分为静态常量和动态常量。

一、静态常量

声明静态常量的语法格式如下:

修饰符 const 数据类型 常量名 = 常量值;?修饰符:可以是public、protected、internal、private等。

?const:声明静态常量的关键字。

?数据类型:可以是整型(int)、浮点型(double)、枚举或字符串。
如:

public const int a = 1000;

静态常量在编译时会将其替换为所对应的值。用const定义的常量,对于所有类的对象而言都是一样的,因此需要像访问静态成员那样去访问const定义的常量。

也可以使用一条语句同时声明多个常量,比如:

class classTest
{
    public const double X = 1.0;
    public const double Y = 2.0;
    public const double Z = 3.0;
}

可以写成:
 
class classTest2
{
    public const double X = 1.0, Y = 2.0, Z = 3.0;
}

在classTest2中声明的多个常量都写在一条语句中。

二、动态常量

声明动态常量的例子如下:

public static readonly classTest classTest1 = new classTest();

声明好动态常量以后,系统会为readonly所定义的动态常量分配内存空间,就像类的其它成员一样拥有独立的空间。

const和readonly的值一旦初始化则都不再可以改写;
const只能在声明时初始化;readonly既可以在声明时初始化也可以在构造器中初始化;
const隐含static,不可以再写static const;readonly则不默认static,如需要可以写static readonly;
const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值);readonly则是运行期动态解析的常量;
const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员.

 

三、静态常量与动态常量的区别

?静态常量在声明时要设置常量值;动态常量在声明时可以设置常量值,也可以不设置常量值,也可以在类的构造函数中设置常量值。

?静态常量的类型必须是值类型(请阅读C#数据类型),其值不能通过new进行设置;动态常量没有类型的限制,可以定义任何类型的常量。

?静态常量对于类的所有对象来说,常量的值是相同的;动态常量对于类的所有对象来说,常量的值可以是不同的。

?静态常量不分配内存;动态常量要分配内存,以便保存常量实体。

?静态常量性能稍高,但是限制多,不灵活;动态常量性能稍低,但是灵活、方便。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!