C 入門詳解 8

2022-07-03 03:15:09 字數 1556 閱讀 5746

字段(field)是一種表示與物件或型別/結構體關聯的變數

欄位是型別的成員,舊稱「成員變數」

與物件關聯的字段也叫做例項字段

與型別關聯的字段稱為靜態字段,由static修飾

參見c#語言定義文件

儘管字段宣告帶有分號,但它不是語句

欄位的名字一定是名詞

無顯示初始化時,字段獲得其型別的預設值,所以字段永遠都不會未被初始化

例項字段初始化的時機-物件建立時

靜態字段初始化的時機-型別被載入的時候

例項唯讀字段

靜態唯讀字段

屬性是一種用於訪問物件或型別的特徵的成員,特徵反映了狀態

屬性是字段的自然拓展

從命名上看,field更偏向於例項物件在記憶體中的布局,property更偏向於反映現實世界物件的特徵

對外:暴露資料,資料可以是儲存在字段裡的,也可以是動態計算出來的

對內:保護欄位不被非法值汙染

屬性又get/set方法對進化而來

又乙個語法糖-屬性背後的秘密

完整宣告-後台成員變數與訪問器

簡略宣告-只有訪問器

動態計算值的屬性

注意例項屬性和靜態屬性

屬性的名字一定是名詞

唯讀屬性-只有getter沒有setter

儘管語法上正確,幾乎沒有人使用只寫屬性,因為屬性的主要目的是通過向外暴露資料而表示物件/型別的**

一般情況下,它們都用於表示實體的狀態

屬性大多數情況下是字段的包裝器

建議:永遠使用屬性來暴露資料,即欄位永遠都是private或protected的

public

class

student

此時例項化獲得物件後,使用age欄位,可以設定任意值,容易被汙染

public

class

student

public

void setage(int

value)

else}}

}

將字段的訪問性設為private(一般會小寫開頭),然後新增方法來管理獲取和設定字段值。

上面的方法過於冗長,而且獲取設定要通過方法,沒有最開始直接呼叫欄位來的直接。微軟創造了屬性這個概念,裡面有set,get訪問器。

public

class

student

set

else}}

}

這樣一來通過屬性來暴露資料,在屬性裡做對字段的處理邏輯。

索引器是這樣一種成員:它使物件能夠用與陣列相同的方式進行索引

參見c#語言定義文件

注意:沒有靜態索引器

常量是表示常量值的類成員

常量隸屬於型別而不是物件,即沒有例項常量

注意區分成員常量與區域性常量

為了提高程式的可讀性和執行效率--常量

為了防止物件的值被改變--唯讀字段

向外暴露不允許修改的資料--唯讀屬性,功能與常量有一些重疊

當希望成為常量的值型別不能被常量宣告接受時--靜態唯讀字段

C 入門詳解

1.型別轉換 1 隱式implicit型別轉換 往下展開 int x convert.toint32 string 不丟失精度的轉換 int轉成long,single轉換double等 子類向父類的轉換 h.此時成員訪問符,看不到例項中t的方法teach,因為規定引用變數去訪問引用的例項的成員時,只...

C 入門詳解

表示式的定義 各類表示式概覽 語句的定義 語句詳解 表示式是演算法邏輯的最基本的 最小 單元,表達一定的演算法意圖 因為操作符具有優先順序,所以表示式也就有了優先順序 c 語言中表示式的分類 a value。任何能得到值的運算 操作符和結果型別 a variable 每個變數都有聯合型別 布林型別表...

c 基礎入門 8

檔案操作 ofstream ofs ofs.open test.txt ios out ofs 姓名 張三 close ifstream ifs ifs.open test.txt ios in if ifs.is open 第一種讀取方式 char buf 1024 初始化全為0 while if...