C# 中const,readonly,static的使用小结

1. const关键字

1.1 概述

在C#中,const关键字用于定义常量。一旦常量被定义,它的值不能被修改。常量的值在编译时就必须被确定下来,并且只能使用常量的编译时值。

1.2 常量的定义和使用

在C#中,可以使用const关键字定义常量。常量必须使用一个基本数据类型(如int、float、string等)作为其类型,并且必须在声明时进行初始化。

const int MAX_VALUE = 100;

const string MESSAGE = "Hello World!";

常量的命名通常使用大写字母,以便与普通变量进行区分。

常量的值不能在程序运行时被更改,因此在程序中使用常量时,应该保证常量的值是固定不变的。常量的值可以在编译时确定,也可以从其他常量或常量表达式中获取。

const int MIN_VALUE = MAX_VALUE - 100;

const double PI = 3.14159;

常量可以被用作表达式中的值,例如:

int radius = 5;

double area = PI * radius * radius;

常量值的改变只能通过修改常量的声明来实现,例如:

const int VALUE = 100;

// 修改常量的值

const int NEW_VALUE = VALUE + 10;

2. readonly关键字

2.1 概述

在C#中,readonly关键字用于定义只读字段。只读字段的值只能在声明时或构造函数中进行初始化,并且不能被改变。只读字段的值在运行时可以确定。

2.2 只读字段的定义和使用

和常量不同,只读字段的值不能在声明时赋予一个常数表达式以外的其他值,但可以在构造函数中进行赋值。只读字段使用readonly关键字进行声明。

readonly int MAX_SIZE = 100;

readonly string MESSAGE;

public MyClass()

{

// 只读字段在构造函数中初始化

MESSAGE = "Hello World!";

}

只读字段的值可以从其他字段或属性中获取。只读字段的值可以在运行时被修改,但只能在构造函数中进行修改,其他方法不能修改只读字段的值。

readonly int MAX_VALUE;

readonly int MIN_VALUE;

public MyClass(int max, int min)

{

MAX_VALUE = max;

MIN_VALUE = min;

}

public int GetRange()

{

// 可以使用只读字段的值计算结果

return MAX_VALUE - MIN_VALUE;

}

3. static关键字

3.1 概述

在C#中,static关键字用于定义类级别的成员,这些成员属于类而不属于类的实例。静态成员可以在没有创建类的实例的情况下访问。

3.2 静态成员的定义和使用

静态成员可以是静态字段、静态属性、静态方法或静态构造函数。静态成员可以使用类名直接访问,无需创建类的实例。

public class MyClass

{

public static int count;

public static readonly string MESSAGE = "Hello World!";

public static void PrintCount()

{

Console.WriteLine("Count: " + count);

}

}

静态成员在程序开始时就被初始化,并且只能在程序结束时被销毁。静态成员的生命周期与程序的生命周期一致。

静态成员可以被类的实例共享,即多个实例使用同一个静态成员的值。静态成员可以被类的实例或类本身访问。

MyClass.count = 10;

MyClass.PrintCount();

MyClass obj1 = new MyClass();

obj1.count = 20;

MyClass obj2 = new MyClass();

obj2.count = 30;

Console.WriteLine(obj1.count); // 输出:30

Console.WriteLine(obj2.count); // 输出:30

静态成员可以在程序的任何地方访问,包括其他类中。静态成员可以用于在多个类之间共享数据或功能。

4. 总结

在C#中,const关键字用于定义常量,它的值在编译时确定且不能被修改。readonly关键字用于定义只读字段,它的值在编译时或运行时确定且不能被修改。static关键字用于定义类级别的成员,它的值在程序开始时初始化且只有一个副本。

const关键字适用于表示绝对不变的值,如数学常数。readonly关键字适用于表示只在初始化时确定的值,如配置项。static关键字适用于共享数据或功能。

在使用const关键字时,应该保证常量的值是固定不变的;在使用readonly关键字时,应该保证只读字段的值在初始化后不会被修改;在使用static关键字时,应该注意静态成员的生命周期和共享性。

后端开发标签