找回密码
 register

QQ登录

只需一步,快速开始

查看: 54|回复: 0

[*编程基础*] C# 常量的知识点:编译时常量与运行时常量

[复制链接]

[*编程基础*] C# 常量的知识点:编译时常量与运行时常量

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:185
  • 打卡月天数:8
  • 打卡总奖励:183
  • 最近打卡:2025-05-08 13:47:30
Waylee

主题

0

回帖

1万

积分

仙帝

积分
19615
Waylee 2025-4-16 07:19 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

在C#编程中,常量是不可变的值,这些值在程序的生命周期内不会改变。常量可以提高代码的可读性、可维护性,并且可以增加性能。C#提供了两种类型的常量:编译时常量(const)和运行时常量(readonly)。本文将详细讲解这两者之间的区别,并通过示例代码加以说明。

1. const:编译时常量

const关键字用于声明编译时常量。编译时常量的值必须在编译时就能确定。它们在程序的整个运行过程中保持不变,并且不能再赋予新的值。如果你试图在运行时更改const常量的值,编译器将会抛出错误。

特点:

  • const常量的值在编译时就固定了。
  • const常量必须是编译时已知的常量,不能依赖于运行时的计算结果。
  • const常量隐式地具有static特性,可以直接通过类名访问。

例如,以下代码中的PRICE1PRICE2就是编译时常量:

const int PRICE1 = PRICE2 * 2;
const int PRICE2 = 368;

需要注意,PRICE1的值依赖于PRICE2,但由于PRICE2本身是一个const常量,编译器可以在编译时计算出PRICE1的值。

2. readonly:运行时常量

readonly关键字用于声明运行时常量。与const不同,readonly常量的值可以在运行时根据某些条件来设置,通常是在对象的构造函数中进行初始化。readonly常量在运行时只会被赋值一次,之后不能再改变。

特点:

  • readonly常量的值可以在运行时计算和初始化,通常在对象构造函数中赋值。
  • readonly常量可以依赖于运行时计算的结果。
  • readonly常量可以是实例字段,也可以是静态字段,但在赋值后不能再次修改。

以下代码中的PRICE3PRICE4就是运行时常量:

static readonly int PRICE3 = PRICE4 * 2;
static readonly int PRICE4 = 100;

在这段代码中,PRICE3的值依赖于PRICE4,虽然PRICE4是一个readonly常量,但它的值仍然可以在运行时确定。

3. 示例代码与输出

下面是完整的示例代码,通过演示编译时常量与运行时常量的区别。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        const int PRICE1 = PRICE2 * 2;
        const int PRICE2 = 368;

        static readonly int PRICE3 = PRICE4 * 2;
        static readonly int PRICE4 = 100;

        static void Main(string[] args)
        {
            Console.WriteLine("const 常量的效果:");
            Console.WriteLine(PRICE1);  // 输出:736
            Console.WriteLine(PRICE2);  // 输出:368
            Console.WriteLine("");
            Console.WriteLine("readonly 常量的效果:");
            Console.WriteLine(PRICE3);  // 输出:0
            Console.WriteLine(PRICE4);  // 输出:100
        }
    }
}

输出:

const 常量的效果:
736
368

readonly 常量的效果:
0
100

4. 总结

  • 编译时常量(const:其值在编译时已经确定,无法在运行时更改。适用于那些不需要在运行时计算的固定值。
  • 运行时常量(readonly:其值可以在运行时通过构造函数或其他方式计算,并且只能被赋值一次。适用于那些依赖于运行时计算的常量。

在实际开发中,选择使用const还是readonly取决于常量值是否可以在编译时确定。如果可以,使用const会带来性能上的优势。如果常量值需要在运行时计算,或者你希望在构造时赋值,则使用readonly

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2025-5-9 14:18 , Processed in 0.130926 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表