C# 深入理解类(成员常量)

成员常量

成员常量类似前一章所述的局部常量,只是它们被声明在类声明中而不是方法内,如下面的
示例:

image
与局部常量类似,用于初始化成员肯量的值在编译时必须是可计算的,而且通常是一个预定
义简单类型或由它们组成的表达式。

class MyClass
{
    Const int IntVal1=100;  //没问题,因为IntVal1的值
    Const int IntVal2=2*IntVal1;//前面一行已设置
}

与局部常量类似,不能在成员常量声明以后给它赋值。

class MyClass
{
    Const int IntVal;  //错误:必须初始化
    IntVal=100;        //错误:不允许赋值
}

说明 与C和C++不同,在C#中没有全局常量。每个常量都必须声明在类型内。

常量与静态量

然而,成员常量比局部常量更有趣,因为它们表现得像静态值。它们对类的每个实例都是“可
见的",而且即使没有类的实例也可以使用。与真正的静态量不同,量没有自己的存储位置,
而是在编译时被编译器替换。这种方式类似于C和C++中的#define值。

例如,下面的代码声明了类x,带有常量字段PI。Main没有创建x的任何实例,但仍然可以
使用字段PI并打印它的值。图7-6阐明了这段代码。

class X
{
    public const doouble PI=3.1416;
}

class Program
{
    static void Main()
    {
        Console.WriteLine($"pi={X.PI}");//使用常量字段PI
    }
}

常量字段表现得像静态字段,但是在内存中没有存储位置

static const double PI=3.14;//错误:不能将常量声明为static
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值