c# const readonly
时间: 2023-10-28 13:24:38 浏览: 48
在 C# 中,有两种用于声明常量的关键字:`const` 和 `readonly`。这两个关键字的作用相似,都是用来创建不可修改的常量。然而,它们之间有一些重要的区别。
使用 `const` 关键字声明的常量必须在声明时进行初始化,并且不能在程序运行过程中更改其值。这意味着 `const` 常量的值在编译时就确定了,并且在运行时是不可变的。例如:
```csharp
public const int MyConstant = 10;
```
另一方面,使用 `readonly` 关键字声明的常量可以在构造函数中进行初始化,并且可以在运行时更改其值。这意味着 `readonly` 常量的值是在运行时确定的,但只能在构造函数或初始化器中进行更改。例如:
```csharp
public readonly int MyReadOnlyConstant;
public MyClass()
{
MyReadOnlyConstant = 20;
}
```
总结来说,`const` 常量是编译时常量,其值在编译时确定;而 `readonly` 常量是运行时常量,其值在运行时确定,并且可以在构造函数中进行初始化和更改。
相关问题
c#的readonly
在C#中,readonly是一个关键字,用于声明只读字段。只读字段是在声明时或构造函数中初始化,并且不能在其他地方再次赋值。与const关键字不同,readonly字段可以在字段声明和任何构造函数中多次分配不同的值。这使得readonly字段可以在运行时根据需要进行初始化。
例如,可以使用readonly关键字声明一个只读字段,并在构造函数中初始化它:
```
public class ReadOnlyDemo
{
private readonly string _code = "empty string";
public ReadOnlyDemo(string code)
{
_code = code;
}
public string GetCode()
{
return _code;
}
}
```
在上面的示例中,_code字段是只读的,它在构造函数中被初始化,并且不能在其他方法中再次赋值。
另外,readonly字段也可以用于运行时常量。这意味着它们可以在运行时被赋值,并且在整个程序的执行过程中保持不变。这与编译时常量(const)不同,后者在编译时被赋值并且在整个程序的执行过程中保持不变。
例如,下面的示例展示了如何在构造函数中初始化只读字段,并在运行时保持不变:
```
public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;
```
在上面的示例中,timeStamp字段是只读的,并且在声明时被初始化为当前时间的刻度数。由于它是只读的,它的值在整个程序的执行过程中保持不变。
总结起来,C#中的readonly关键字用于声明只读字段,这些字段在声明时或构造函数中初始化,并且不能在其他地方再次赋值。它们可以在运行时根据需要进行初始化,并且可以用于运行时常量。
#### 引用[.reference_title]
- *1* *2* [一看就懂——C#中readonly关键字](https://blog.csdn.net/CrazyRock98/article/details/106490654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [C#——关键字:readonly](https://blog.csdn.net/weixin_43945471/article/details/112473546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
c# readonly
在C#中,readonly关键字用于声明只读字段。只读字段的值只能在声明时或构造函数中进行赋值,一旦赋值后就不能再修改。\[1\]与const关键字不同的是,readonly字段的值是在运行时获取的,而不是在编译期间获取的。\[1\]只读字段可以在定义的同时赋值,也可以在构造函数中进行赋值。\[2\]只读字段的属性只能有get访问器,不能有set访问器。\[3\]这样设计的目的是为了确保只读字段的值在对象创建后不会被修改。
#### 引用[.reference_title]
- *1* *2* [C#readonly关键字](https://blog.csdn.net/qq_34423913/article/details/113740707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
- *3* [c#编程--只读关键字(readonly)](https://blog.csdn.net/weixin_45595405/article/details/121762941)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]