C 物件和型別總結 三)

2021-10-23 10:39:43 字數 1575 閱讀 9300

1、屬性

屬性(property)的概念:它是乙個方法或一對方法,在客戶端**看來,它們是乙個欄位如windows窗體的height屬性。若下面的**為:

//mainform is of type system.windows.forms

mainform.height=400;

因此,視窗會在螢幕上重新設定大小。下面**實際上呼叫屬性訪問器,它包含的**重新設定窗體大小。

public string someproperty

set}

get訪問器不帶任何引數,且必須返回屬性宣告的型別。set訪問器指定任何顯式引數,但編譯器假定它帶乙個引數,其型別也與屬性相同,並表示為value.

private int age;

public int age

set}

1)唯讀和只寫屬性

在屬性定義中省略set訪問器,就可以建立唯讀屬性。

private string name;

public string name

}

同樣,在屬性定義中省略get訪問器,可建立唯讀屬性。

2)屬性的訪問修飾符

c#允許給屬性的get和set訪問器設定不同的訪問修飾符,所以屬性可以有公有的get訪問器和私有或受保護的set訪問器,有助於控制屬性的設定方式或時間。

public string name

private set

}

注意set訪問器有乙個私有訪問修飾符,而get訪問器沒有任何修飾符,表示get訪問器具有屬性的訪問級別。在get和set 訪問器中,必須有乙個具備屬性的訪問級別。如果get訪問器級別是protected,便會產生乙個編譯錯誤,對此兩個訪問器的訪問級別都不是屬性。

3)自動實現的屬性

如果屬性的set和get訪問器中沒有任何邏輯,可使用自動實現的屬性。這屬性會自動實現後備成員變數。

publicint age
不需要宣告private int age,編譯器會自動建立它。使用自動實現的屬性,就不能再屬性設定中驗證屬性的有效性。

public int age
使用自動實現的屬性,不能在屬性設定中驗證屬性的有效性,但必須有兩個訪問器,嘗試把該屬性設定為唯讀屬性就會出錯,上面的例子。

但是,每個訪問器的訪問級別可以不同,下面的**是合法的

public int age
參考:

c#高階程式設計 第9版本

C 類和物件(三) 匿名型別

var關鍵字,它用於表示隱式型別化的變數。var與 new關鍵字一起使用時,可以建立匿名型別。匿名型別只是乙個繼承自 object 且沒有名稱的類。該類的定義從初始化器中推斷,類似於隱式型別化的變數。如果需要乙個物件包含某個人的姓氏 中間名和名字,則宣告如下 var captain new firs...

C 語言 物件和型別(學習總結)

第一部分 using system namespace basiccsharp int i 1 console.writeline 1 i ai 0 ai 0 otherclass.change ref i,ai 如果使用ref來傳遞資料,則傳其引用,那麼方法裡的改變會影響外面的變數 console...

c 類和物件總結

話不多說,我們直接進入主題 物件 客觀世界裡的一切事物都可以看作是乙個物件,每乙個物件應當具有屬性 靜態特徵,比如乙個班級,乙個專業,乙個教室 和行為 動態特徵,例如 學習,開會,體育比賽等 兩個要素。物件是由一組屬性和一組行為構成的。類 class 就是物件的型別,代表了某一批物件的共同特性和特徵...