- const:在声明时必须初始化值;readonly:可以不初始化值,且可以延迟到构造函数。
- cons:在编译期间会被解析,并将常量的值替换成初始化的值;readonly:延迟到运行的时候。
- const:注重的是效率;readonly:注重灵活。
-
const:没有内存消耗;readonly:因为需要保存常量,所以有内存消耗
举个例子:一座旅店的房间数是固定的,但是不同的旅店可能有不同的房间数,这时我们就需要使用readonly修饰的这样一个常量
namespace ReadonlyDemo { /// <summary> /// 创建一个旅店类 /// </summary> class Hotel { public readonly int roomNum; //表示房间总数 public int guestNun; //表示已入住房间数 public Hotel(int roomNumValue) { //构造函数 roomNum = roomNumValue; } public bool isFull() { if(guestNun >= roomNum) { return true; } else { return false; } } //一个旅客入住 public void LodgeIn() { if (isFull()) { Console.WriteLine("房间满了"); } else { guestNun++; Console.WriteLine("入住成功"); } } } class Program { static void Main(string[] args) { Console.WriteLine("---------HOT1旅店----------"); Hotel hot1 = new Hotel(6); //hot1旅店有6个房间 for (int i = 0; i < 7; i++) { hot1.LodgeIn(); //入住客人 } Console.WriteLine("HOT1旅店房间总数:{0}", hot1.roomNum); Console.WriteLine("HOT1旅店已经入住:{0}人", hot1.guestNun); Console.WriteLine("---------Tel1旅店----------"); Hotel tel1 = new Hotel(5); //Tel1旅店有10个房间 for (int i = 0; i < 3; i++) { tel1.LodgeIn(); //入住客人 } Console.WriteLine("Tel1旅店房间总数:{0}", tel1.roomNum); Console.WriteLine("Tel1旅店已经入住:{0}人", tel1.guestNun); Console.ReadLine(); } } }总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ASPKU的支持。










