第8章 常數與字段

2022-03-25 06:53:31 字數 790 閱讀 3536

8.1 常數

常數通常只能是編譯器認為的基元型別,在編譯時編譯器將常數的值儲存在其所定義模組的元資料內。列舉型別由於本身以基元型別形式儲存,故也可以被用來定義常數。(這裡列舉以基元型別儲存不知道是指在cts裡都是這樣還是特指c#裡的做法)常數總是被認為是型別的一部分而非例項

c#不允許為常數指定static關鍵字,因為常數隱含為static

因為常數是在編譯時被直接把值嵌入到il**中,而不是執行時載入,所以如果需要乙個模組中的數值能夠在執行時被另乙個模組獲取(也就是需要在這個模組中改變了數值之後呼叫它的模組不需要重新編譯就能夠在執行時獲取這個新的值)就不應該使用常數

8.2 字段

clr支援型別和例項兩種字段(即靜態和非靜態)。對於型別字段,系統在該型別被載入進入乙個應用程式域時為其分配動態記憶體,這通常發生在引用該型別的方法第一次被jit編譯時。對於例項字段,系統在該型別的例項被構建時為其分配動態記憶體

clr支援唯讀和讀寫兩種欄位的訪問方式。唯讀字段只能在構造器內被賦值(值得注意的是在構造器內部唯讀欄位卻可以被多次賦值)

const與static readonly的區別就是乙個是編譯時載入乙個是執行時載入(可能還有其他區別),如上一節的例子,需要需要乙個模組中的數值能夠在執行時被另乙個模組獲取就應使用static readonly

c#允許我們採用內聯的方式來初始化乙個類的常數、讀寫欄位和唯讀字段,即直接在宣告的時候用等號對其賦值。事實上c#對字段的內聯初始化僅僅是一種簡化的表達方式,實際的初始化操作是在構造器中完成的(對常數則應該是只有內聯這一種初始化的方法)

第8章指標

1.指標 指標是儲存記憶體位址的變數。在記憶體中每一塊儲存單元都有相對應的唯一的位址編號,指標就是一塊儲存這種編號的空間 2.對於乙個變數可以用 符號來獲取它的位址 int a int p a 什麼樣的變數,就需要宣告對應的型別的指標。這是為了告訴系統,我從這個位址開始要讀取多少位的記憶體塊,才能正...

第8章 多型

執行時的多型 我們所說的多型一般是執行時的多型。要使用多型,在宣告物件時就應該遵循一條法則 宣告的總是父類型別或介面型別,建立的是實際型別。物件導向的三大特徵 封裝 繼承 多型多型通過分離 做什麼 和 怎麼做 從另外的乙個角度將介面和實現分離開來。封裝通過合併特徵和行為來建立新的資料型別。實現隱藏 ...

第8章 函式

位置實參,關鍵字是參 預設值,注意順序,把已經有預設值的放在最後 topping這個可以接收任何實參,一般放形參最後,它是個空元組,當作列表一樣就行 def pet name,size 27 預設值 print name size n input please get me a name s inp...