C 學習筆記一 物件和型別

2021-08-25 16:05:54 字數 1602 閱讀 1447

最近在學習c#,做一些筆記。

1、物件和型別

類和結構

區別:類是儲存在堆上的引用型別,結構是儲存在堆疊上的值型別。訪問方式、結構不支援繼承。較小的結構可提高效能。

都可以用new來宣告例項。

1.1類成員

類中的資料和函式稱為類的成員。

資料成員:字段、常量(const)、事件

函式成員:方法、屬性、建構函式、終結器(析構函式)、運算子、索引器。

方法:1、給方法傳遞引數

引數可以通過引用或值傳遞給方法,在變數通過引用轉遞給方法時,被呼叫的方法得到的就是這個變數,所以在方法內部對變數進行的任何改變在方法退出後仍舊發揮作用。而如果變數是通過值傳遞的,被呼叫的方法得到的是變數的乙個副本,也就是說,在方法退出後,對變數的改變會丟掉。對複雜的資料型別,按引用傳遞的效率更高,因為按值傳遞時要複製大量的資料。

[color=blue]要使按值傳遞的引數按引用方式傳遞可以使用ref out關鍵字

他們的區別是:

1、使用ref型引數時,傳入的引數必須先被初始化。對out而言,必須在方法中對其完成初始化。

他們的適合場合:

out適合用在需要retrun多個返回值的地方,而ref則用在需要被呼叫的方法修改呼叫者的引用的時候。[/color]

參考:[url]

2、方法的過載

宣告同名但引數個數或型別不同的方法即可。

注意:兩個方法不能僅在返回型別上有區別。

兩個方法不能僅根據引數是宣告為ref還是out來區分。

建構函式

如果提供了帶引數的建構函式,編譯器就不會自動提供預設的建構函式。

[color=darkred]如果將建構函式定義為private或protected.則外部**就無法通過new例項化該類,[/color]

這在下面兩種情況下是有用的:

1)類僅用作某些靜態成員或屬性的容器,因此永遠不會例項化

2)希望類僅通過某個靜態成員函式來例項化(所謂對類例項化的類**方法)

靜態建構函式

通常在第一次呼叫類的成員之前執行

建構函式初始化器

3、唯讀字段

readonly比const關鍵字靈活的多。唯讀字段可以在建構函式中賦值,但不能在其他地方賦值。可以結合靜態建構函式初始化一些變數。如有乙個編輯文件的程式,因為要註冊,需要限制可以同時開啟的文件數,可以定義乙個字段表示這個最大的文件數,這個字段必須是唯讀的。每次安裝程式時,從登錄檔或其他檔案讀入

public class documenteditor

}

4、結構

結構是值型別,不是引用型別,他們儲存在堆疊中火儲存為內聯。

結構的建構函式。編譯器總是提供乙個無引數的建構函式,這是不允許替換的。

不允許定義無引數的建構函式。

5、部分類

partial關鍵字允許把類、結構、介面放到多個檔案中。

6、靜態類

不能建立靜態類的例項

7、object類

所有類的基類

tostring()

gethashtable()

equals()

finalize()

gettype()

《一》物件和封裝

物件導向 oop 可以從物件提煉出類的概念。物件是類的例項,類是物件的資料型別。從現實世界抽象出類 找出名詞,確定類 屬性 找出名詞,確定方法 剔除與業務無關的屬性和方法 訪問修飾符 構造方法名 3.3 1 靜態變數 不同的類之間需要對同乙個變數進行操作,把共享的變數用static修飾,那該變數為靜...

一 物件模型

在ruby程式中,物件僅僅是其大世界的乙個公民而已,除了物件還有其他語言構件,比如類 class 模組 module 以及例項變數 imstance variable 等,元程式設計操控的就是這些語言構件。所有語言構件存在於其中的系統稱為物件模型,它是ruby的靈魂。1 物件由一組例項變數和乙個類的...

JAVA學習筆記之一(物件入門)

1 上溯造型 upcasting 把衍生型別當作他的基礎型別處理的過程 基礎型別shape有方法draw,erase等方法,circle,line,等型別是shape的衍生型別,函式dostuff對基礎型別物件做如下處理 void dostuff shape s s.draw s.erase 這個函...