C 學習筆記 屬性 索引器

2021-10-19 14:24:18 字數 2311 閱讀 6049

屬性(property)是表達事物的狀態的,屬性的訪問方式可以是讀(讀取),也可以是寫(存放),讀、寫屬性分別用getset來進行表示。

修飾符 型別名 屬性名

set}

由此可見,在c#中,屬性更好的表達了事物的狀態的設定和獲取。所以在c#中,一般採取以下原則:

若在類的內部記錄事物的狀態資訊,則用字段變數;

字段變數一般用private修飾,以防止對外使用;

對外公布事物的狀態資訊,則使用屬性;

屬性一般與某個或幾個字段變數有對應關係。

從c# 3.0起,在簡單的情況下,屬性可以簡寫,只寫,而不寫實現體,編譯器自動產生乙個欄位來實現它。例如:

class

person

public

string age

}

編譯器自動生成類似於以下的**:

class

person

public

int age

}

這種簡寫方式大大簡化了程式的書寫,是一種編譯器「語法糖」。(真甜)

c#中在建立物件(new)時,可以直接對屬性賦值:

person p =

newperson

;

這也是一種語法糖,編譯器會生成乙個new語句及多個屬性賦值語句。

可以直接定義建立物件實體及其屬性,而不用事先定義乙個類,如:

new

匿名型別的物件可以當成object來使用

static

void main (

string

args)

,new};

console.writeline (books.length)

;}

索引器(indexer)也是一種函式式的成員,可以使得物件能用下標來得到乙個值。定義「索引器」為類建立了乙個「虛擬陣列」,該類的例項可以用 [ ](陣列訪問運算子)進行訪問。在一定意義上,屬性是對字段的訪問,索引器是對陣列(或一組元素)的訪問。

對於封裝類似陣列的功能或類似集合的功能的類,使用索引器使該類的使用者可以使用陣列語法訪問該類。

修飾符 型別名 this

[引數列表]

get}

其中,具有set及get方法,這一點與屬性的定義相似。在set方法中,也可以使用乙個特殊變數value表示使用者指定的值。而get方法,使用return返回得到的索引器值。

但與屬性的定義不同的是,這裡沒有屬性名,而是用this表示索引器。

使用索引器的方式為:

物件名[引數]
索引器既可以用於讀,也可以用於寫。系統自動呼叫相應的get及set方法。事實上,編譯器針對型別為t、引數列表為p的索引器,自動產生兩種方法,以供呼叫:

t

get_item

(p);

void

set_item

(p,t

value

);

同乙個類的多個索引器要求引數列表(簽名)必須不同,也就是說,要麼是引數個數不同,要麼是引數型別不同,或者是引數型別的順序不同。

例:indexerrecord.cs 使用索引器來表示一本書的記錄。例中提供了兩個索引器,乙個用整數作引數,乙個用關鍵字作引數。程式中還在乙個索引器中呼叫了另乙個索引器。

class

indexerrecord

;public

string

this

[int idx]

get}

public

string

this

[string key]

get}

private

int findkey (

string key)

static

void main (

string

args)

}

屬性與索引器都能表示事物的狀態,它們之間的比較如下表:

C 索引器學習筆記

本筆記摘抄自 記錄一下學習過程以備後續查用。索引器允許類或者結構的例項按照與陣列相同的方式進行索引取值,索引器與屬性類似,不同的是索引器的訪問是帶參的。索引器和陣列比較 1 索引器的索引值 index 型別不受限制 2 索引器允許過載 3 索引器不是乙個變數 索引器和屬性的不同點 1 屬性以名稱來標...

c 索引器學習筆記1

索引器提供了一種對類內部元素的訪問方法,通過索引器,我們可以方便的控制對元素的訪問,它其實就是帶引數的屬性。索引器一般用在類內部有陣列的情況,不論是基本資料型別陣列,還是類陣列 主要靠arraylist實現 先看個簡單的例子,它實現了單一整形輸入引數的索引器。class a private int ...

C 索引器(C 學習筆記05)

索引器能夠使物件像陣列一樣被索引,使用陣列的訪問方式 object x 索引器的宣告在某種程度上類似於屬性的宣告,例如,使用 get 和 set 方法來定義乙個索引器。不同的是,屬性值的定義要求返回或設定乙個特定的資料成員,而索引器的定義要求返回或設定的是某個物件例項的乙個值,即索引器將例項資料切分...