C# 學習 8 9 方法 構造器

方法

推薦兩本書:
CLR via C#
C# IN DEPTH

方法的前身是函數
函數與方法的關係:
當一個函數以類的成員身份出現的時候,那就叫做方法。
方法有一個別名:成員函數

爲什麼需要方法和函數?
目的1:隱藏複雜的邏輯
目的2:把大算法分解爲小算法
目的3:複用

構造器(構造函數)

當我們聲明瞭一個類,但沒有爲它準備構造器,編譯器爲這個類準備一個構造器。
下面的運行結果表明,
有個默認的構造函數執行了,把內存中的字段初始化了。
在這裏插入圖片描述

自己構造?
構造器是沒有返回值類型的,構造器不需要返回任何結果,負責把內存塊構造好。
下面就是如何自定義一個無參數構造器。
1- 自定義構造函數名與類名完全一致
2- 在函數體內部進行變量的初始化
在這裏插入圖片描述

帶參數的構造函數
當我們定義了一個帶參數的構造器後,發現默認的構造器不靈了。這就要求我們程序員要寫入兩個初始化的參數。
在這裏插入圖片描述

下面的例子演示瞭如何創建無參數,有參數的構造器,並進行調用
構造器生成的快捷鍵是ctor

方法的重載(Overload)

定義:當爲一個類創建方法的時候,方法的名字可以完全一樣,但方法的簽名不能一樣。
就像班裏有50個張三,但他們其實是不一樣的人
回到程序,類裏面有100個有相同名字的方法,他們的簽名不一樣,就說明他們是不同的方法。
下面的例子就是Add的方法的重載
在這裏插入圖片描述

重載決策

由於重載函數的方法名都是一樣的,程序會根據調用方法裏面參數的類型和數量來決定調用的是哪一個方法

如何debug

1- 設置斷點
2- 觀察方法調用時的call stack
3- Step-in,Step-over,Step-out
4- 觀察局部變量的值與變化

方法調用與棧的關係

1- 方法調用時棧內存的分配
stack frame,一個方法被調用的時候,它在棧內存中的佈局
return的值是存在寄存器裏的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章