static readonly const

本文详细解析了C#中static、readonly与const三个修饰符的区别与应用场景。static用于定义类级别的成员,其值可以在运行时改变;readonly声明的变量值在实例化后不可更改;而const则用于声明不可变且为类所有成员的常量。

static 表示类所有---------------->值是可以改的,为类所有

readonly表示只读的变量--------->值不可改,实例化访问

const表示只读常量,为类所有----->值不可改,为类所有

 

static (为类所有)           readonly(值不可改)----------------->const(为类所有的值不可以改的)  为类本身所有的不可变的值

在 C# 中,`static readonly` 结合了 `static` 和 `readonly` 的特性,用于定义类级别的只读字段。以下是其用法和特性: ### 用法 `static readonly` 字段属于类本身,而不是类的实例。可以在声明时直接赋值,也可以在静态构造函数中赋值,但不能在其他地方修改其值。 ```csharp public class AppConst { // 声明时直接赋值 public static readonly string test5 = "APP"; // 静态构造函数中赋值 static AppConst() { test5 = "cpp"; } } ``` ### 特性 - **类级别**:`static readonly` 字段是类级别的成员,所有类的实例共享同一个字段值,不依赖于类的实例。 - **只读性**:一旦赋值后,该字段的值在程序运行期间不能被修改。不过,赋值操作可以在静态构造函数中进行,或者在声明字段时直接赋值。 - **灵活性**:与 `const` 不同,`static readonly` 字段的值不需要在编译时确定,可以在运行时根据某些条件进行赋值,例如从配置文件或方法调用中获取值。 ```csharp public class Example { public static readonly string DynamicValue; static Example() { // 从方法调用中获取值 DynamicValue = GetData(); } public static string GetData() { return "cpp"; } } ``` ### 注意事项 在静态构造函数或声明时赋值后,尝试在其他地方修改 `static readonly` 字段的值会导致编译错误。 ```csharp public class AppConst { public static readonly string test5 = "APP"; public static void Main() { test5 = "cpp"; // 异常,只能在静态构造函数或声明时赋值 } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值