下面是对于“C#中const,readonly,static的使用小结”的详细讲解。
前言
在C#开发中,我们常常会使用const,readonly和static这三个关键字,它们都可以用来定义变量,但具有不同的作用。
const
const是常量的意思,其特点是在编译时期已经固定下来了,不可改变。
在C#中,const定义的变量必须在声明时初始化,而且只能通过常量表达式来初始化,不能在运行时改变它的值。
常量表达式可以是任意表达式,编译器在编译时就会计算出它的值,因此,const定义的常量可以被看成是编译期间的字面常量。
下面是一个示例:
class Program
{
static void Main(string[] args)
{
const int a = 1;
//a=2;//编译时会出错,因为const不能修改
Console.WriteLine("a=" + a);
}
}
readonly
和const不同的是,readonly定义的变量可以延迟初始化,因此它的初始化可以在构造函数中完成,也可以通过对象初始化器来完成。
另外,和const不同的是,readonly的变量是在运行时确定其值的。
因为readonly变量的值是在运行时确定的,所以可以使用只有运行时才能确定的表达式来初始化它,例如可以使用构造函数中的参数来初始化,还可以根据环境的不同,确定不同的初始化值。
以下是一个示例:
class Program
{
readonly int a;
Program()
{
a = 1;//通过构造函数初始化变量a
Console.WriteLine("a=" + a);
}
void Test()
{
const int b = a;//常量表达式可以使用运行时变量
Console.WriteLine("b=" + b);
}
static void Main(string[] args)
{
Program p = new Program();
p.Test();
}
}
static
静态变量(static)是指在类中定义的,所有实例共享的变量。
静态变量的生命周期要比实例变量长,它会在整个程序的生命周期内存在,因此,我们可以在任何地方通过类名来访问静态变量,而不需要创建对象。
静态变量的特点是,它可以被多个实例共享,并且在任何实例中对静态变量的修改都会影响所有的实例。
下面是一个示例:
class Program
{
static int a = 1;//静态变量
static void Test()
{
Console.WriteLine("a=" + a);//直接访问静态变量
}
static void Main(string[] args)
{
Test();//输出1
a = 2;//修改静态变量
Test();//输出2
Console.ReadKey();
}
}
总结
以上是C#中const,readonly和static的使用小结。要点如下:
- const用于定义编译时期的常量,值不可修改。
- readonly用于定义运行时期的常量,值可以在构造函数中初始化。
- static用于定义静态变量,被多个实例共享,值可以在任何地方修改。
希望上述内容能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 中const,readonly,static的使用小结 - Python技术站