程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> const與readonly常量,constreadonly常量

const與readonly常量,constreadonly常量

編輯:C#入門知識

const與readonly常量,constreadonly常量


                                            const與readonly常量

      const與readonly都是用來定義常量,但是它們有什麼區別呢?

      下面我們來簡要的說明一下:

      const修飾的常量是編譯時常量,如:public const String PI=3.1415;什麼是編譯時常量,通俗來講就是指你在聲明時,必須要進行賦值(也就是初始化),如果不賦值,編譯時會出現說“常量字段要求提供一個值”的異常。

      readonly修飾的是運行時常量,可以在聲明中賦值,也可以在構造函數中賦值(注意只能在這兩個地方賦值)。

      http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html(這裡轉載這篇文章),文章中講的很透徹,但是還是想用自己的話,來更加通俗的描述一遍。

      C#語言中有兩種不同的常量類型,也就是靜態常量和動態常量,靜態常量是指編譯器先對常量進行解析,並將常量的值替換成初始化的那個值(也就是指編譯器會傳播常量)。例如下面的代碼:

class Program {
			public static void Main(string[] args) {
			Console.WriteLine("A is {0},B is {1} ", P.A,P. B);
			Console.ReadKey();
		}
	}
	class P {
		public static const int A = B * 10;
		public static const int B = 10;
	}

控制台中輸出的是A is 100,B is 10,也就是正是上面講到的先對常量進行解析,然後替換初始化的值。

 

動態常量是指常量的值在運行的那一個刻才獲得,程序在編譯期間並未對常量進行解析,所以開始執行時都是默認值,如果是int類型的就是默認為0.如下面的代碼:

class Program {
			public static void Main(string[] args) {
			Console.WriteLine("A is {0},B is {1} ", P.A,P. B);
			Console.ReadKey();
		}
	}
	class P {
		public static readonly int A = B * 10;
		public static readonly int B = 10;
	}

控制台中輸出的是A is 0,B is 10.

 

const與readonly有什麼相同的作用呢?

那就是確保兩者修飾的常量字段或者是常量局部變量,在後續的項目中不會由於編碼操作失誤而修改一些固定的值。當然如果是一些常常修改的值就不要用const或者是readonly來修飾了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved