.net框架筆記常數與欄位

iDotNetSpace發表於2008-09-16

一.常數(const)

定義一個常數時,我們必須能夠在編譯時確定它的值.通過編譯後,編譯器將常數的值儲存在其所定義模組的後設資料內.這意味著常數的型別只能是那些編譯器認為的基元型別。(c#中,下面的型別可以稱為基元型別, Boolean.char.byte,sbyte,decimal,int16,uint16,int32,uint32,int64,uint64,single,double以及string,列舉型別由於本身以基元型別形式儲存,故也可以被用來定義常數,但它不是基元型別)

只有基元型別的資料成員在編譯時直接進行初始化.而非基元型別的資料成員只能在執行時呼叫構造器來完成初始化.

常數在執行時不再需要任何的記憶體分配.也不能獲取常數的地址,

二.欄位(readonly)

欄位儲存一個值型別的例項,或一個指向引用型別的引用.在該型別被載入進入一個應用程式時為其分配動態記憶體.

因為欄位是以動態記憶體的形式儲存的.因此只能在執行時刻獲取他們的值,

有隻讀欄位和讀寫欄位兩種.

只讀欄位只能在構造器內被賦值(構造器在物件初次建立時被執行,且只執行一次).對於靜態只讀欄位,則只能在靜態構造器內賦值.

 

.net框架筆記常數與欄位
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt 1
 2    class SomeType
 3.net框架筆記常數與欄位    {
 4        //一個靜態只讀欄位,它的值將在執行時
 5        //類被初始化時計算並儲存在記憶體中
 6        public static readonly Random random = new Random();
 7
 8        //一個靜態讀寫欄位
 9        static int numberofWrites = 0;
10
11        //一個例項只讀欄位
12        public readonly string pathName = "untitled";
13
14        //一個例項讀寫欄位
15        public System.IO.FileStream fs;
16
17        public SomeType(string pathName)
18.net框架筆記常數與欄位        
19            //該行修改只讀欄位pathName
20            //因為是在構造器中,所以可以
21            this.pathName = pathName;
22        }

23
24        public String DoSomeThing()
25.net框架筆記常數與欄位        {
26            //該行首先讀取靜態讀寫欄位,然後又被賦值
27            numberofWrites = numberofWrites + 1;
28
29            //該行讀取例項只讀欄位
30            return pathName;
31        }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-448597/,如需轉載,請註明出處,否則將追究法律責任。

相關文章