C#方法2

weixin_34128411發表於2018-06-25

返回值:

返回值型別:

任意的資料型別或者void

void表示該方法無返回值

方法有無返回值取決於方法的呼叫者是否需要返回值

引數:

引數分為兩種:

形式引數:在編寫方法的時候 預定義的引數

實際引數:在實際呼叫(使用)方法的時候 傳入方法的引數

引數的型別:

形式引數:任意的資料型別 由方法編寫者在預定義時限定

實際引數:任意的資料型別(和形式引數匹配)在方法的呼叫者中定義賦值

宣告和傳參:

形式引數:

public static void Area(int radius)//int radius即為形式引數

{

....

}

實際引數:

public static void Main (string[] args)

{

     int r = 1;

     Area(r);  // r即為實際引數

}

// 傳參的實質:用實際引數為形式引數賦值

int radius = r;

引數陣列,通過關鍵字params定義引數陣列。呼叫時可以傳入個數不同的實參,具備很好的靈活性。

引數陣列必須為引數列表的最後一個引數

引數列表之前可以設定其他的引數

示例:

//引數陣列,關鍵字params

static void Add(params int[] p)

{

    for(int i=0;i

資料型別按照大的分類:值型別和引用型別

值型別:基本資料型別、列舉和結構

引用型別:陣列、類(String)、介面等

區別:

值型別相當於單獨的一個箱子 直接操作箱子內的內容

引用型別相當於管理儲存箱子的管理員

從以下幾個方面來了解它們的具體區別:

1.宣告時

值型別:新產生一個箱子 等待儲存

引用型別:產生一個箱子管理員 等待一個箱子

2.被賦值

值型別:將新的內容直接放在箱子內

引用型別:和=右邊的管理員一起管理同一個箱子

out 和 ref

函式引數預設是值傳遞的,也就是“複製一份”

out和ref傳遞的都是地址引用而不是值

1.形參和實參指向同一地址

2.始終保證形參和實參指向同一地址

區別:

out只出不進

ref又進又出

方法定義時的選擇:

1.若方法只有一個返回值 選擇使用返回值型別

例:

public static int ReturnInt()

{

  return 1;

}

2.如果返回值多於1個 選擇使用out

public static void ReturnInt(out int a,out int b)

{

//a、b賦初值

// a、b參與運算

}

呼叫時: int c;int d;  ReturnInt(out c,out d);

3.如果需要直接將結果返回到某一個變數上 使用ref

public static void ChangeString(ref String s)

{

s = "000"+s;

}

呼叫時: String ss = "1";  ChangeString(ref ss);

引數傳遞需要明白的要點:

形參的修正對實參的影響程度

引數傳遞的方式:

形式引數 = 實際引數

引數的傳遞大致分為三類:

預設傳參(無修飾傳參)值傳參

ref修飾傳遞引數  地址傳參

out修飾傳遞引數 出參

傳參規則:

根據形式引數型別的不同 對實際引數的影響程度也不相同

A:String、結構體、基本資料型別(整型、浮點、字元、布林)、列舉

B:類、陣列

預設傳參(無修飾傳參)值傳參:

A:不影響實際引數

B:影響實際引數

ref修飾傳遞引數  地址傳參:

A:影響實際引數

B:影響實際引數

out修飾傳遞引數  出參:

A:影響實際引數

B:影響實際引數

out修飾的引數 相當於在呼叫者中宣告 在被呼叫者中賦值

結構體、基本資料型別(整型、浮點、字元、布林)、列舉 統稱值型別

String 陣列 類 引用型別

命名引數, 是指通過命名引數(形參名)呼叫,實參順序可以和形參不同。

語法:

Method(形參名字:實參值);

示例:

public static void Add(int a,int b)

{

     int result = a + b;

}

public static void Main (string[] args)

{

     int c = 10; 

     // 可以不按形式引數的順序傳入實際引數

     Add(b:5,a:c);

}

含義:可選引數,是指給方法的特定引數指定預設值,在呼叫方法時可以省略掉這些引數。

注意事項:

(1)可選引數不能為引數列表的第1個引數,必須位於所有的必選引數之後(除非沒有必選引數);

(2)可選引數必須指定一個預設值,且預設值必須是一個常量表示式,不能為變數;

(3)所有可選引數以後的引數都必須是可選引數。

(4)若要為可選引數傳遞新的值 請使用命名引數的語法

示例:

public static void Add(int a,int b=2)

{

     int result = a + b;

}

public static void Main (string[] args)

{

     int a = 10; 

     // 省略b實際引數的傳遞

     Add(a);

     // 也可以不省略 為b重新賦值

     Add(a,b:5);

}