一:简介
——常量可以当做常规的变量,只是他们的值在定义后不能再被修改
——常量可以是任何的基本数据类型,比如整型,浮点型,字符串型,Class等
二:两种写法
——静态常量(const)
using UnityEngine;
public class Test : MonoBehaviour
{
public const float PI = 3.1415f;
public const string tag="Player";
}
——动态常量(readonly)又称为只读变量
using System;
public class Test
{
private readonly float PI = 2.5f;
public Test()
{
PI = 3.14f;
}
}
静态常量和动态常量的区别:
——const声明的同时必须要赋值,readonly声明的时候可以赋值也可以不赋值,也可以在类的构造函数中进行赋值
——const只能声明.NET框架中的类型(int,float,string,enum,null等),数组、结构体类型不能声明为const(因为数组初始化的时候需要用new关键字)。readonly可以声明任何一个类型
——const是隐式static默认就是static,不能使用static关键字。readonly是显式static,可以声明static也可以不声明static
——const(静态常量compile-time constants)是编译时确定的,当程序编译时将所有引用const常量的地方替换为声明常量时的数值。readonly(动态常量runtime constants)是在运行时才获取常量的值,并赋值到每个引用的位置
![]()
——const可以声明类中的字段或函数体内的局部变量,readonly只可以声明类中的字段
——const声明的常量只能通过类去访问,readonly声明的常量需要看是否有static关键字
——const声明的常量不需要分配内存无内存开销,在内存中无存储位置,但是限制多,不灵活
readonly声明的常量灵活,方便,但是性能略低,且有内存开销,动态分配内存,在内存在有存储位置