const在类中定义的变量是常量,也就是初始化赋值后,后面就不可更改了。它通过类名来访问,如下:
using System;
class test
{
public const int a = 5;
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(test.a);
}
}
而用static修饰的变量,后续是可以更改的。也不需要初始化赋值。如下:
using System;
class test
{
public static int a;
}
class Program
{
static void Main(string[] args)
{
test.a = 5;//通过类名访问,静态方法也是通过类名访问
}
}
用static修饰的方法也一样,因为是类中独此一份,用它修饰的方法和变量并不属于哪个对象。
所以在static修饰的方法内,只可以访问static修饰的成员,和调用static修饰的方法。(非静态方法可以正常访问静态方法和成员)
用readonly修饰的变量,它也是只读的,后续不可更改变量的值,但它是通过对象来访问。而且readonly跟const不同的是,可以不用在定义的时候就初始化,可以在类的构造函中初始化。如下:
using System;
class test
{
public readonly int a;
public test(int num)
{
a = num;//构造函数中初始化
}
}
class Program
{
static void Main(string[] args)
{
test test1 = new test(3);
Console.WriteLine(test1.a);//通过对象来访问
}
}
const 和static readonly的区别
static readonly可以通过静态构造函数来赋值,如下:
class test
{
public static readonly int sta;
public static test(int num)
{
sta = num;
}
}