C#、屬性和方法,結構和類(建構函式)
一、類
定義一個類時,等於定義了一個數據型別的藍圖。
這實際上並沒有定義任何的資料,但它定義了類的名稱意味著什麼,也就是說,類的物件由什麼組成及在這個物件上可執行什麼操作。
物件是類的例項。構成類的方法和變數成為類的成員。
類的定義:
類的定義是以關鍵字 class 開始,後跟類的名稱。
類的主體,包含在一對花括號內。
類定義的一般形式:
<access specifier> class class_name
{
// member variables
<access specifier> <data type> variable1;
...
<access specifier> <data type> variableN;
// member methods
<access specifier> <return type> method1(parameter_list)
{
// method body
}
}
訪問識別符號 <access specifier> 指定了對類及其成員的訪問規則。如果沒有指定,則使用預設的訪問識別符號。類的預設訪問識別符號是 internal,成員的預設訪問識別符號是 private。
資料型別 <data type> 指定了變數的型別,返回型別 <return type>
二、屬性
屬性是類,結構和介面的命名成員。
類或結構中的成員變數或方法稱為域。
屬性是域的擴充套件,且可使用相同的語法來訪問。
它們使用訪問器讓私有域的值可被讀寫或操作。
屬性不會確定儲存位置。
相反,它們具有可讀寫或計算它們值的訪問器。
訪問器
屬性的訪問器包含有助於讀取或計算或設定屬性的可執行語句。
訪問器宣告可包含get訪問器,set訪問器。
三、方法
一個方法是把一些相關的語句組織在一起,用來執行一個任務的語句塊。每一個 C# 程式至少有一個帶有 Main 方法的類。
要使用一個方法,您需要:
- 定義方法
- 呼叫方法
定義方法:
當定義一個方法時,從根本上說是在宣告它的結構的元素。
<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body
}
Access Specifier:訪問修飾符,這個決定了變數或方法對於另一個類的可見性。
Return type:返回型別,一個方法可以返回一個值。返回型別是方法返回的值的資料型別。如果方法不返回任何值,則返回型別為 void。
Method name:方法名稱,是一個唯一的識別符號,且是大小寫敏感的。它不能與類中宣告的其他識別符號相同。
Parameter list:引數列表,使用圓括號括起來,該引數是用來傳遞和接收方法的資料。引數列表是指方法的引數型別、順序和數量。引數是可選的,也就是說,一個方法可能不包含引數。
Method body:方法主體,包含了完成任務所需的指令集。
呼叫方法:
類內部可以使用方法名呼叫方法,類外部必須使用類的例項化物件名.方法名進行呼叫。
四、建構函式
類的建構函式是類的一個特殊的成員函式,當建立類的新物件時執行。
建構函式的名稱與類的名稱完全相同,它沒有任何返回型別。
預設的建構函式沒有任何引數。
但是如果你需要一個帶有引數的建構函式可以有引數,這種建構函式叫做引數化建構函式。
帶有引數的建構函式可以在建立物件的同時給物件賦初始值。
建構函式的定義:
//不帶引數的構造方法
public 類名()
{
//執行程式碼
}
//帶引數的構造方法
public 類名(資料型別 引數1,資料型別 引數2,資料型別 引數3,......,資料型別 引數N)
{
//執行程式碼
}
解構函式:
類的解構函式是類的一個特殊的成員函式,當類的物件超出範圍時執行。
解構函式的名稱是在類的名稱前加上一個波浪形(~)作為字首,它不返回值,也不帶任何引數。
解構函式用於在結束程式(比如關閉檔案、釋放記憶體等)之前釋放資源。
解構函式不能繼承或過載。
解構函式的定義:
~類名()
{
//執行程式碼
}
五、結構
結構體是值型別資料結構。
它使得一個單一變數可以儲存各種資料型別的相關資料。
struct 關鍵字用於建立結構體。
定義結構:
為了定義一個結構,必須使用 struct 語句。
struct 結構名
{
屬性;
};
使用結構:
結構名 結構變數名;
結構變數名.屬性=屬性值;
結構有以下特點:
1.結構可帶有方法、欄位、索引、屬性、運算子方法和事件。
2.結構可定義建構函式,但不能定義解構函式。
但是能為結構定義預設的建構函式。
3.預設的建構函式是自動定義的,且不能被改變。與類不同,結 構不能繼承其他的結構或類。
4.結構不能作為其他結構或類的基礎結構。
5.結構可實現一個或多個介面。
6.結構成員不能指定為 abstract、virtual 或 protected。
7.使用 New 操作符建立一個結構物件時,會呼叫適當的構造函 數來建立結構。與類不同,結構可以不使用 New 操作符即 可被例項化。不使用 New 操作符,只有在所有的欄位都被 初始化之後,欄位才被賦值,物件才被使用。
類和結構有以下幾個基本的不同點:
1.類是引用型別,結構是值型別。
2.結構不支援繼承。
3.結構不能宣告預設的建構函式。