C#中const,readonly和static关键字的用法介绍
如果有一个值不太会变化,我们经常使用const和readonly,这2者有何不同呢?有时候,我们也会在readonly之前加上关键字static,这又意味着什么呢?
const
public class Test
{
public const int defaultValue = 10;
//这里报错:因为不能在构造函数内为const变量赋值
public Test()
{
defaultValue = 1000;
}
}
以上,
可以通过Test.defaultValue来获取变量defaultValue的值。
在Test构造中为defaultValue赋值会报错,只能在声明defaultValue的时候赋初值。
readonly
readonly默认是实例变量,只能通过"对象实例.字段名"来访问。
readonly变量可以在声明的时候或在构造函数内赋值。
如果想改变readonly变量值,只需要在声明变量或构造函数内修改,不需要重新生成程序集。
readonly是运行时变量
class Program
{
static void Main(string[] args)
{
Test test = new Test();
Console.WriteLine(test.rdValue);
Console.ReadKey();
}
}
public class Test
{
public readonly int rdValue;
public Test()
{
this.rdValue = 100;
}
//这里报错:因为只能在声明变量或构造函数内对readonly变量赋值
public int RDVaue
{
get { return rdValue; }
set { rdValue = value; }
}
}
以上,
通过Test类的实例来获取readonly变量值,test.rdValue。
在RDValue属性中为readonly变量rdValue赋值会报错。
如果在readonly之前加上static关键字:
此时的readonly变量只能在声明变量的时候赋值
此时的readonly变量可以通过"类名.字段名"来访问
此时的readonly变量变成了编译期变量
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Test.rdValue);
Console.ReadKey();
}
}
public class Test
{
public static readonly int rdValue=100;
}
以上,
只能在声明static readonly变量rdValue的时候赋值。
通过Test.rdValue来访问static readonly变量。
总结:const是静态的、编译期变量,只能在声明变量的时候赋值;readonly是运行时变量,可以在声明的时候或在构造函数内赋值。当在readonly前加上关键字static,变成static readonly后,此时的static readonly变量就变成了静态的、编译期变量。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播