C 基礎 07 方法 上

2022-02-07 21:32:48 字數 3751 閱讀 7102

一、方法的結構

1.方法的概念

c#中的方法就是宣告在型別中的語句塊,是型別的函式成員。它既可以有名稱,也可以沒有名稱,沒有方法名的方法稱為匿名方法。

2.方法的結構

方法主要由兩部分組成:方法頭和方法體。其中,方法頭指定方法的特徵,包括方法是否返回值以及返回值的型別、方法名和引數列表;方法體就是由一對大括號括起來的可執行**的語句序列,包括本地變數、流程控制結構、方法呼叫和巢狀塊等。方法的結構如下圖所示

3.方法宣告示例

下面示例宣告乙個無返回值的、方法名為「sayhello」、無引數的公共方法。

1

///2

///方法宣告

3///

4public

void

sayhello()

5

二、本地變數

1.本地變數

本地變數就是宣告在方法體中的變數,本地變數經常用於儲存本地的或者臨時的計算資料。本地變數存在於建立它的塊以及巢狀的塊。可以在方法體內的任意地方宣告本地變數,但是必須遵循「先宣告、後賦值、再使用」的先後順序。

宣告本地變數的語法:「 type identifier = value; ",其中type表示變數型別,identifier表示變數名,value表示給變數賦的初始值。下面的方法中宣告了兩個本地變數。

1

///2

///方法宣告

3///

4public

void

sayhello()

5,今年歲了!

", name, age);

10 }

2.本地變數與類字段的對比

1).生存期:例項欄位從例項被建立時開始,直到例項不再被訪問時結束;本地變數從它在塊中宣告開始,直到塊完成執行時結束。

2).隱式初始化:例項欄位會隱式初始化為它的字段型別的預設值;本地變數沒有隱式初始化,所有變數必須先初始化,然後才能使用,否則報錯。

3).儲存位置:類的所有欄位都是儲存在對記憶體堆中的,無論是值型別的還是引用型別的;本地變數如果是值型別,則儲存在記憶體棧裡,如果是引用型別,則引用儲存在棧裡,而實際資料儲存在堆裡。

3.型別推斷和var

1).型別推斷

當我們宣告本地變數時,很多時候我們所寫的變數型別都是編譯器可以通過賦值的等號右邊的值來反推出來,這就叫型別推斷。比如 int i =10; 這條宣告語句,左邊的型別int 可以通過右邊的10推斷出來。由於型別推斷,催生了下邊的var關鍵字。 

2).var關鍵字

從c#3.0開始,可以在變數宣告的開始部分的顯式型別名的位置使用新的var關鍵字,它表示可以從初始化語句右邊推斷出的型別。下面的兩條本地變數宣告語句中的int 和 var 是等價的。

1

//宣告2個整型變數i和j

2int i = 10;3

var j = 100;

var關鍵字使用條件:只能用於本地變數,不能用於字段;只能在變數宣告語句中包含初始化時才能使用,如果只是宣告乙個變數而沒有初始化,就不能使用var;var關鍵字並不改變c#的強型別性質,一旦編譯器推斷出變數的型別,該型別就是固定的了。

c#3.0及以後版本推薦在以下幾種情況下使用var關鍵字隱式型別化區域性變數,以簡化程式的書寫:

①.如果賦值語句右側的變數型別十分明顯,或在精確的型別並不重要時,使用隱式型別的區域性變數;賦值語句右側的型別不明顯時,不要使用var。

1

var var1 = "

this is clearly a string.";

2var var2 = 27;3

//數字和字串用"+"號相連,最後轉換為了字串

4var var3 = console.readline() + var1 +var2;

5 console.writeline(var3);

②.使用隱式型別在 for 和 foreach 迴圈中確定迴圈變數的型別。

1

//a.在 for 語句中使用隱式型別。

2var syllable = "ha"

;3var laugh = "";4

for (var i = 0; i < 10; i++)59

10//

b.在 foreach 語句中使用隱式型別。

11foreach (var ch in

laugh)

12

三、本地常量

1.本地常量

本地常量就是宣告在方法體中的常量。常量(本地常量/成員常量)的特徵如下:常量在宣告的同時必須初始化;在宣告後值不能改變。

2.本地常量的宣告

本地常量使用const關鍵字宣告。語法:「const type identifier = value;」 const不是修飾符,而是核心宣告的一部分,必須放在型別之前,其它部分和本地變數宣告語法相同。下面是乙個宣告並且讀取本地常量值的示例:

1

///2

///顯示圓的面積

3///

4void

displayradius()

5,area:

", radius, area);

16 }

四、方法呼叫

1.方法使用「方法名+引數列表」進行呼叫。下面是乙個呼叫上面「顯示圓的面積」的方法,其中引數為空。

1

static

void main(string

args)

2

2.方法呼叫的執行順序

1).當前方法的執行在呼叫點被掛起。

2).流程控制轉移到被呼叫方法的開始。

3).被呼叫方法執行,直到完成(或丟擲異常)。

4).控制回到發起呼叫的方法。

該呼叫順序的圖示如下:

五、方法返回值

1.返回值型別

很多方法宣告的目的就是為了它的返回值。方法是否返回值以及返回值的資料型別都由方法宣告的返回值型別決定,如果要返回值,則必須在方法名前面宣告乙個具體的返回型別;如果方法不返回值,則不行必須宣告void返回型別。下面的示例宣告乙個返回int值的方法:

1

///2

///獲得當前小時

3///

4///

5int

gethour()

6

2.返回語句

1).普通return語句

在上面的示例中,使用return語句返回了當前小時數。如果方法頭中宣告了非void的返回型別,則必須在方法體中每一條穿過方法的路徑上有一條帶有確定值的reutrn語句。return語句的語法為:「return expression;」,其中expression為乙個確定的值。

2).void方法的return語句

本來,void方法不需要返回語句,但我們可以根據某些條件使用不帶引數的return語句提前退出方法以簡化程式邏輯。語法為「 reutrn;"。注意,這裡的return語句不帶引數,只有乙個分號,並且只能用於返回型別為void的方法體中。下面是乙個示例:

1

///2

///根據條件提前退出方法

3///

4///

5void test(string

msg)

611 console.writeline("

你好!"

);12 }

C 基礎 一(方法詳解)

需要知道 類和方法的關係 方法和引數修飾符 自定義方法可以有或沒有引數,也可以有或沒有返回值。可以被各種關鍵字 static virtual public new等 修飾以限制其行為。c 引數修飾符 無 如果乙個引數沒有用引數修飾符標記,則認為它將按值傳遞,這意味著被呼叫的方法收到原始資料的乙份副本...

Java基礎》5 方法

僅供自己記錄學習,無它用,歡迎指導!定義乙個方法的格式 public static void 方法名稱 方法名稱的命名規則和變數一樣,使用小駝峰。方法體 也就是大括號當中可以包含任意條語句。注意事項 1.方法定義的先後順序無所謂。2.方法的定義不能產生巢狀包含關係。3.方法定義好了之後,不會執行的,...

Golang基礎 08 方法method

型別別名和方法 method value與method expression 方法名稱衝突與字段訪問許可權 tips type a struct type b struct func main a.print b b b.print func a a print func b b print 就像過...