C 類成員 索引器

2021-05-08 21:44:43 字數 1934 閱讀 2978

1

、索引器使用的特徵

類中有陣列型別的字段被訪問時,使用索引器。

class samplecollection

set }

} 2、索引器定義

public int this[int index]// indexer declaration

·索引器類似於屬性,不同之處在於它們的訪問器採用引數。

·使用索引器可以用類似於陣列的方式為物件建立索引。 ·

get

訪問器返回值。

set

訪問器分配值。 ·

this

關鍵字用於定義索引器。 ·

value

關鍵字用於定義由

set

索引器分配的值。

·索引器不必根據整數值進行索引,由您決定如何定義特定的查詢機制(

return arr[i];

是最簡單的訪問內容的方式,但不是唯一的方式)。

·索引器可被過載(索引器的簽名由其形參的數量和型別組成)。

·索引器可以有多個形參,例如當訪問二維陣列時。

·索引器的簽名由其形參的數量和型別組成。它不包括索引器型別或形參名。如果在同一類中宣告乙個以上的索引器,則它們必須具有不同的簽名。

·索引器值不屬於變數;因此,不能將索引器值作為

ref

或out

引數進行傳遞。 3

、介面索引器

介面索引器的訪問器與類索引器的訪問器具有以下方面的不同:

·介面訪問器不使用修飾符。

·介面訪問器沒有體。

因此,訪問器的用途是指示索引器是讀寫、唯讀還是只寫。

public inte***ce isomeinte***ce

} 乙個索引器的簽名必須區別於在同一介面中宣告的其他所有索引器的簽名。

// indexer on an inte***ce:

public inte***ce isomeinte***ce

} // implementing the inte***ce.

class indexerclass : isomeinte***ce

set }

}class mainclass

= ", i, test[i]); }

// keep the console window open in debug mode.

system.console.writeline("press any key to exit.");

system.console.readkey(); }

}/* output:

element #0 = 56.2

element #1 = 56.7

element #2 = 56.5

element #3 = 58.3

element #4 = 58.8

element #5 = 60.1

element #6 = 65.9

element #7 = 62.1

element #8 = 59.2

element #9 = 57.5 */

在上例中,可以通過使用介面成員的完全限定名來使用顯式介面成員實現。例如:

public string isomeinte***ce.this

但是,只有當類使用同一索引器簽名實現乙個以上的介面時,為避免多義性才需要使用完全限定名。例如,如果

employee

類實現的是兩個介面

icitizen

和iemployee

,並且這兩個介面具有相同的索引器簽名,則必須使用顯式介面成員實現。即,以下索引器宣告:

public string iemployee.this

在iemployee

介面上實現索引器,而以下宣告:

public string icitizen.this

C 之static類成員,static類成員函式

0.static修飾類中成員,表示類的共享資料 1.static類成員 在c primer裡面說過,static類成員不像普通的類資料成員,static類資料成員獨立於一切類物件處在。static類資料成員是與類關聯的,但不與該類定義的物件有任何關係。這句話什麼意思?就是static不會想普通類資料...

C 類成員函式的儲存方式 C 類成員

對於類的大小,我們發現類內成員函式並不存在於類的儲存空間。這引發了我們的思考,類中的函式成員儲存在什麼地方?資料成員每個物件會有乙份,函式成員會不會也是這樣呢?include using namespace std class time private int hour int minute int...

c 類成員函式

c 的兩大特色是多型和模板。其中多型是通過繼承和虛函式來實現的,其中虛函式是通過每個物件裡面的虛表來實現的。如果這個物件的類有虛函式,那麼這個類就有一張虛表,存的是每個虛函式的入口位址,而這個類的每個物件,都會有乙個4位元組的指標,指向這張虛表,這個就是虛指標。上面一段話很多人都知道,但是如果問普通...