const与readonly定义的值都不能更改,但它们到底有哪些异同点呢?
Const
²Const是常量的意思,其定义的变量只能读取不能更改,且只能在定义时初始化,不能在构造函数与其它属性与方法中初始化
publicclassConstTest
{
///<summary>
///const定义的变量
///</summary>
publicconstintSUM = 100;
publicConstTest()
{
//错误!const定义的变量不能在构造函数中初始化
SUM = 100;
}
publicvoidmethod()
{
//错误!const定义的变量不能在方法中初始化
SUM = 100;
}
}
²Const定义的字段属于类访问,类似于静态变量,只能通过类名来访问
//只能通过类名访问
Console.WriteLine(ConstTest.SUM);
ConstTestt =newConstTest();
//错误!无法通过实例对象访问
Console.WriteLine(t.SUM);
²Const只能定义值类型与字串,若定义引用类型的变量,只能初始化为null
///<summary>
///const定义的变量
///</summary>
publicconstintSUM = 100;
publicconststringCHARACTER_STRING ="We are chinese!我们都是中国人!";
///<summary>
///const定义的引用类型只能初始化为null
///</summary>
publicconstObjectobj =null;
///<summary>
///错误!const定义的引用类型只能初始化为null
///</summary>
publicconstPersonperson =newPerson();
readonly
readonly是只读的意思,其定义的变量在运行期间也只能读取不能更改,但与const有以下不同
readonly分为实例只读变量与静态只读变量
²实例只读变量在定义时或者实例构造函数中初始化,通过对象访问
publicclassReadOnlyTest
{
///<summary>
///定义时初始化(实例只读变量)
///</summary>
publicreadonlyintsum = 0;
publicReadOnlyTest()
{
//实例只读变量在实例构造函数中初始化
sum = 100;
}
}
客户端访问形式
新闻热点
疑难解答