首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 銳利體驗 (七) (1):欄位與屬性核心觀念

     編輯:關於C語言

第七講:欄位與屬性

欄位

欄位又稱成員變數,表示儲存位置,是 C# 類別不可或缺部分。型別可為任何 C# 資料型別(除 string 外其他參考型別涉及建構函式操作,放在「介面繼承多型」講解)。

實例欄位與靜態欄位

  • 實例欄位:屬於具體物件,特定物件專有。只能透過物件存取:MyObject.instanceField。
  • 靜態欄位:屬於類別,所有物件共用。只能透過類別存取:MyClass.staticField。不可透過物件存取(MyObject.staticField 編譯錯誤),此點與傳統 C++ 不同。

存取限制與封裝

五種存取修飾詞均適用欄位。internal 擴展 C++ friend,需相互可見欄位時宣告為 internal 並置於同一組件編譯。需對繼承子類別也可見則宣告 protected internal。

readonly 與 const 差異

特性readonlyconst
賦值時機宣告初始化或建構函式初始化宣告時必須賦值
值確定時期執行時編譯時
可為實例/靜態是僅靜態(隱含 static)
型別限制任意型別簡單型別、string、enum、null 參考型別

關鍵差異:const 編譯時計算確定值並代換到每個引用處;readonly 執行時確定,僅初始化後不希望改變。跨組件參考時,修改 const 值需重新編譯所有引用組件;修改 readonly 僅需重編譯定義組件。大型系統開發特別需注意。

欄位初始化

編譯器預設將每個欄位初始化為預設值(數值 0、字元 \x0000、布林 false、參考 null、結構遞迴預設值)。但面向物件設計原則仍建議正確初始化,未初始化會產生編譯警告。初始化兩處:宣告時、建構函式內。宣告初始化被編譯器作為賦值陳述式置於建構函式最開始。實例變數置於實例建構函式,靜態變數置於靜態建構函式。宣告靜態變數並初始化時,編譯器自動產生靜態建構函式。const 嚴格說非初始化陳述式,類似 C++ 宏代換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved