1、第三章 對象和類型ide
一、類和結構的區別:函數
兩者實際上都是建立對象的模板,每一個對象都包含數據,並提供了處理和訪問數據的方法。都使用new來建立和初始化。spa
1)類定義了每一個對象(稱爲實例)能夠包含的數據和功能,類是引用類型,老是存儲在堆(heap)上,關鍵字class,對象
類靜態成員屬於類,實例成員屬於對象。類成員: 字段、屬性(也能夠定義只有get或者set訪問器的屬性)、常量(最好別聲明爲Public,private)、方法、構造函數、索引器、運算符、事件、析構函數、類型(類能夠包含內部類)繼承
2)而結構是值類型,一般存儲在棧(stack)上,不支持繼承。關鍵字struct索引
二、方法事件
注意,正式的C#術語區分函數和方法:get
1)C#術語的函數成員:不只包含方法、也包含類或結構的一些非數據成員,如索引器、運算符和構造函數和析構函數等,甚至還有屬性。模板
2)C#術語的數據成員:而字段、常量和事件纔是。class
三、方法重載:overload 方法名相同 參數個數和/或數據類型不一樣,僅經過返回類型或者參數名稱是不足以區分的,方法重載是能夠調用另外一個重載方法
四、方法重寫(覆蓋):override
五、方法參數 :
1)命名的參數
2)可選參數,必須是方法定義的最後參數;int GetSquareOf(int x,int y=1,int z=2){...}
3)個數可變的參數:int AnyNumberOfArguments(params int[] data){...} params Object[] data
public void AnyNumberOfArguments(params Object[] data)
{
}
調用:AnyNumberOfArguments("123", 456);
4)個數可變的參數+命名參數 則「個數可變的參數」只能使用一次,且必須是方法的最後一個參數
六、構造函數
能夠爲構造函數提供任意多的重載,只要它們的簽名有明顯的區別便可
靜態構造函數
只讀字段
枚舉
部分類
靜態類
Object類
2、第四章 對象和類型