1.類和接口
在C#中接口是負責功能的定義,項目中通過接口來規范類,而類是負表具體功能的實現。
一個類可以繼承一個基類也就是父類,但可以實現多個接口(接口其實就是實現了多繼承)。
在類中也有抽象類的定義,抽象類用abstract聲明,抽象類(abstract class)不能實列化,抽象類裡可以有抽象的方法,屬性,也可以有具體的方法和屬性。也就是說抽象類裡可以有抽象方法,也可以有具體的方法,但是有抽象方法的類一定是抽象類。
接口(interface)只是功能的定義,是一個行為的規范,接口中可以包含方法,屬性,而這些只有定義,而沒有實現體。
2.值類型和引用類型
值類型和引用類型的區別在於,值類型的變量直接存放的是實際數據,而引用類型的變量存放的則是數據的地址。值類型的變量直接把變量的值保存在堆棧中,從堆棧中可以快速的訪問實際數據,因此值類型表示實際數據,而引用類型的變量則是把實際數據的地址保存在堆棧中,而實際數據保存在堆中。表示指向存儲在內存堆中數據的指針和引用,(包括類,接口,數組和字符串),因此值類型和引用類型最基本的區別在於內存中的存諸方式。
值類型 引用類型 變量存放內容 實際值 引用 內存單元 堆棧 堆 傳遞參數 實際值 引用(對象)