静态常量:编译器在编译时进行解析,并对其进行初始化;
动态常量:运行时进行初始化。
区别与联系:
静态常量 | 动态常量 | |
初始化 | 声明时初始化 | 可以在构造方法中初始化 |
类型限制 | 类型必须是值类型,且不能通过new来进行初始化 | 没有限制 |
内存消耗 | 只需要分配栈内存,不需要分配堆内存 | 需要分配栈内存和堆内存 |
变量类型 | 类成员变量 | 类成员变量或实例成员变量 |
示例:
using System;
namespace ConstantTest
{
class Program
{
public const int STATIC_CONTST = 10;
public static readonly int RUNTIME_CLASS_CONST = 20;
public readonly int RUNTIME_INSTANCE_CONST;
public Program()
{
RUNTIME_INSTANCE_CONST = 30;
}
static void Main(string[] args)
{
Console.WriteLine("STATIC_CONTST: " + Program.STATIC_CONTST);
Console.WriteLine("RUNTIME_CLASS_CONST: " + Program.RUNTIME_CLASS_CONST);
Console.WriteLine("RUNTIME_INSTANCE_CONST: " + new Program().RUNTIME_INSTANCE_CONST);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}