天天看點

[C#1] 5-屬性1.無參屬性2.無參屬性[索引器]

1.無參屬性

當定義一個屬性時,編譯器會在生成的托管子產品中産生一下3項:

1:get通路器方法,定義get時才有;

2:set通路器方法,定義set時才有;

3:關于屬性的中繼資料,這項總是存在;

這寫中繼資料資訊中包括一些标記和屬性類型,并有一個對get和set通路器方法的引用,僅僅為屬性和它的通路器之間提供了一層關聯關系。CLR本身并不使用它們,在運作時僅需要通路器方法即可。采用屬性的代碼不應有過複雜結構和太長的執行時間。應該相應的簡短快速,對于簡單的get和set,JIT編譯器會将代碼進行内聯[inline]處理優化。

2.無參屬性[索引器]

索引器可以看作是對"[]"操作符的一種重載方式。CLR同樣對待索引器和無參屬性。預設産生get_Item、set_Item方法,其中Item是編譯器預設的名稱,可通過應用Sysetm.Runtime.CompilerDervices.IndexNameAttribute特性來改變預設的Item名字。System,String類型就是一個例子,String類型的索引器名字叫做Chars,而不是Item。

C#沒有靜态索引器[CLR支援],對CLR來說,屬性和索引器僅僅是定義在類型中的一些方法而已

作者:

Blackheart

出處:

http://linianhui.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀