,,C#中const和readonly的用法比较

,,C#中const和readonly的用法比较

今天边肖就和大家分享一下C#中const和readonly的用法对比。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友一起看看吧。

const常量

创建const常量有两个好处。第一个优点是const常量比数字更容易阅读和修改,因为使用了有意义的名称。第二个优点是,因为编辑器确保它的值在程序运行期间保持不变,const constant比variable更健壮。

声明const常量的语法如下:

访问修饰符常量关键字数据类型常量名称=初始化;

public const double PI=3.1415926

Const常量只能在声明时初始化,不能在其他地方赋值。它的值在操作期间保持不变。特别需要注意的是,一个类的const constant成员是隐式静态的,它们都在类外使用了类名来引用变量PI。奇怪的是,虽然const在默认情况下是静态的,但它不能由static关键字显式声明。

(其实const的静态是在代码层面,因为编译器在生成IL的时候会直接用对应的值替换对const常量的引用,这样会割裂const常量与其类型的从属关系。从这个角度来说,不能用static关键字声明是合理的。)

readonly常量

Const常量是隐式静态的,由同一类的所有对象共享。所有对象都有相同的值。如果O1和O2是Clircle类的两个对象,它们的const常量PI大小相同,都是3.1415926。

有时我们需要这样一个变量。它在类中的具体对象是一个固定的常数,但是它在不同的对象中可以有不同的值。这个常数可以通过readonly常数实现。

Const:该值必须在声明时初始化;Readonly:该值可能未初始化,可能会延迟到构造函数。

缺点:编译时会被解析,常量的值会被初始化的值替换;Readonly:延迟到运行时。

Const:注重效率;只读:注重灵活性。

Const:不消耗内存;Readonly:有内存消耗,因为需要保存常量。

比如一个酒店的房间数是固定的,但是不同的酒店可能有不同的房间,所以我们需要用readonly修改的这样一个常数。

命名空间ReadonlyDemo

{

///摘要

///创建一个酒店类

////摘要

一流酒店

{

public readonly int roomNum//表示房间总数

public int guestNun//表示已被占用的房间数量

public hotel(int roomumvalue){//构造函数

roomNum=roomNumValue

}

公共布尔值为空()

{

if(guestNun=roomNum)

{

返回true

}

其他

{

返回false

}

}

//一名乘客将办理登机手续。

public void LodgeIn()

{

if (isFull())

{

控制台。WriteLine('房间满了');

}

其他

{

guestNun

控制台。WriteLine(“成功签入”);

}

}

}

班级计划

{

静态void Main(string[] args)

{

控制台。writeline(“-”);

Hotel hot1=新酒店(6);//hot1酒店有6个房间。

for(int I=0;I 7;我)

{

hot1。LodgeIn();//入住客人

}

console . writeline(' hot 1酒店房间总数:{0} ',hot 1 . room um);

控制台。WriteLine('HOT1酒店已入住:{0}人',hot 1 . guest nun);

控制台。writeline(“-”);

酒店tel1=新酒店(5);//Tel1酒店有10个房间。

for(int I=0;i3;我)

{

tel1。LodgeIn();//入住客人

}

控制台。writeline(' TEL1酒店房间总数:{0} ',TEL1 . room num);

控制台。WriteLine('Tel1酒店已入住:{0}人',Tel1 . guest nun);

控制台。ReadLine();

}

}

}

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 设计一个简单的C#控制台应用程序,C#控制台程序,C# 创建控制台应用程序
  • 深入解析windows第8版,深入解析C#(第4版)
  • 数组代码,c# 数组操作,C# 数组实例介绍(图文)
  • 学会C#要多久,学会c#要多久,c#学习之30分钟学会XAML
  • 回溯法01背包问题c,回溯法求解01背包问题伪代码,C#使用回溯法解决背包问题实例分析
  • xml文件转义字符,xml转意字符,C# XML中的转义字符操作
  • winform 进度条控件,c# 进度条使用
  • winform 进度条控件,c# 进度条使用,C#使用winform实现进度条效果
  • winform backgroundworker,c# isbackground
  • winform backgroundworker,c# isbackground,C# BackgroundWorker用法详解
  • lua与c#交互,lua c#
  • lua与c#交互,lua c#,ToLua框架下C#与Lua代码的互调操作
  • linq c#,linq原理 c#
  • linq c#,linq原理 c#,c#中LINQ的基本用法实例
  • java decimal保留两位小数,sql中decimal函数保留2位小数,C#中decimal保留2位有效小数的实现方法
  • 留言与评论(共有 条评论)
       
    验证码: