C# readonly
最后修改于 2025 年 2 月 16 日
在本文中,我们将展示如何在 C# 中使用 readonly 关键字。 readonly 关键字用于创建不可变字段,这些字段只能赋值一次,可以在声明时或在构造函数中赋值。
readonly 关键字对于创建初始化后不应更改的字段特别有用,从而确保不可变性并提高代码安全性。
这些字段可以在声明时或类的构造函数中初始化。 初始化后,readonly 字段的值不能更改。
readonly 的基本用法
以下示例演示如何使用 readonly 关键字创建不可变字段。
Program.cs
class Program
{
// Declare a readonly field
private readonly int _value;
// Initialize the readonly field in the constructor
public Program(int value)
{
_value = value;
}
public void PrintValue()
{
Console.WriteLine($"Value: {_value}");
}
}
class MainClass
{
static void Main()
{
var program = new Program(10);
program.PrintValue();
}
}
在此程序中,_value 字段声明为 readonly 并在构造函数中初始化。 初始化后,_value 的值无法更改。
$ dotnet run Value: 10
readonly 与 const 关键字
以下示例演示了 readonly 和 const 字段之间的区别。
Program.cs
class Program
{
// Declare a const field
public const int ConstValue = 100;
// Declare a readonly field
public readonly int ReadonlyValue;
public Program(int value)
{
ReadonlyValue = value;
}
}
class MainClass
{
static void Main()
{
Console.WriteLine($"Const Value: {Program.ConstValue}");
var program = new Program(200);
Console.WriteLine($"Readonly Value: {program.ReadonlyValue}");
}
}
在此程序中,ConstValue 字段声明为 const,这意味着它的值必须在编译时赋值并且不能更改。 ReadonlyValue 字段声明为 readonly,这意味着它的值可以在运行时赋值,但在初始化后不能更改。
$ dotnet run Const Value: 100 Readonly Value: 200
readonly 与引用类型
以下示例演示了如何将 readonly 关键字与引用类型一起使用。
Program.cs
class Person
{
public string? Name { get; set; }
}
class Program
{
// Declare a readonly field of a reference type
private readonly Person? _person;
public Program(string name)
{
_person = new Person { Name = name };
}
public void Show() => Console.WriteLine($"Person Name: {_person?.Name}");
public void ChangeName(string name) => _person.Name = name;
}
class MainClass
{
static void Main()
{
var program = new Program("Alice");
program.Show();
program.ChangeName("Bob");
program.Show();
}
}
在此程序中,_person 字段声明为 readonly,这意味着对 Person 对象的引用在初始化后不能更改。 但是,Person 对象的属性仍然可以修改。
$ dotnet run Person Name: Alice Person Name: Bob
来源
在本文中,我们展示了如何在 C# 中使用 readonly 关键字来创建不可变字段。 readonly 关键字是确保不可变性和提高代码安全性的强大工具。
作者
列出所有 C# 教程。