c#方法
一個方法是把一些相關的陳述句組織在一起,用來執行一個任務的陳述句塊,
方法簽名
通過指定在 class 或 struct 中宣告方法:
- 可選的訪問級別,如
public或private, 默認值為private, - 可選的修飾符,如
abstract或sealed, - 回傳值,或
void(如果該方法不具有), - 方法名,
- 任何方法引數, 方法引數在括號內,并且用逗號分隔, 空括號指示方法不需要任何引數,
C# 中定義方法
當定義一個方法時,從根本上說是在宣告它的結構的元素,在 C# 中,定義方法的語法如下:
<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body
}
方法的各個元素:
- Access Specifier:訪問修飾符,這個決定了變數或方法對于另一個類的可見性,
- Return type:回傳型別,一個方法可以回傳一個值,回傳型別是方法回傳的值的資料型別,如果方法不回傳任何值,則回傳型別為 void,
- Method name:方法名稱,是一個唯一的識別符號,且是大小寫敏感的,它不能與類中宣告的其他識別符號相同,
- Parameter list:引數串列,使用圓括號括起來,該引數是用來傳遞和接收方法的資料,引數串列是指方法的引數型別、順序和數量,引數是可選的,也就是說,一個方法可能不包含引數,
- Method body:方法主體,包含了完成任務所需的指令集,
下面的類包含三個方法:
abstract class Motorcycle
{
public void StartEngine() { }
protected void AddGas(int gallons) { }
public virtual int Drive(int miles, int speed) { return 1; }
public abstract double GetTopSpeed();
}
方法訪問(呼叫)
在物件上呼叫方法類似于訪問欄位, 在物件名稱之后,依次添加句點、方法名稱和括號, 引數在括號內列出,并用逗號隔開, 因此,可以按以下示例中的方式呼叫 Motorcycle 類的方法:
class TestMotorcycle : Motorcycle
{
public override double GetTopSpeed()
{
return 108.4;
}
static void Main()
{
TestMotorcycle moto = new TestMotorcycle();
moto.StartEngine();
moto.AddGas(15);
moto.Drive(5, 20);
double speed = moto.GetTopSpeed();
Console.WriteLine("My top speed is {0}", speed);
}
}
引數傳遞
當呼叫帶有引數的方法時,您需要向方法傳遞引數,在 C# 中,有三種向方法傳遞引數的方式:
| 方式 | 描述 |
|---|---|
| 值引數 | 這種方式復制引數的實際值給函式的形式引數,實參和形參使用的是兩個不同記憶體中的值,在這種情況下,當形參的值發生改變時,不會影響實參的值,從而保證了實參資料的安全, |
| 參考引數 | 這種方式復制引數的記憶體位置的參考給形式引數,這意味著,當形參的值發生改變時,同時也改變實參的值, |
| 輸出引數 | 這種方式可以回傳多個值, |
回傳值
方法可以向呼叫方回傳值, 如果回傳型別(方法名稱前列出的型別)不是 void,則方法可以使用 return 關鍵字來回傳值, 如果陳述句中 return 關鍵字的后面是與回傳型別匹配的值,則該陳述句將該值回傳給方法呼叫方, return 關鍵字還會停止方法的執行, 如果回傳型別為 void,則可使用沒有值的 return 陳述句來停止方法的執行, 如果沒有 return 關鍵字,方法執行到代碼塊末尾時即會停止, 具有非 void 回傳型別的方法才能使用 return 關鍵字回傳值,
異步方法
通過使用異步功能,你可以呼叫異步方法而無需使用顯式回呼,也不需要跨多個方法或 lambda 運算式來手動拆分代碼,
異步方法可以具有 Task、Task、 或 void 回傳型別, void 回傳型別主要用于定義需要 void 回傳型別的事件處理程式, 無法等待回傳 void 的異步方法,并且回傳 void 方法的呼叫方無法捕獲該方法引發的例外, 從 C# 7.0 開始,異步方法可以有任何類似任務的回傳型別,
在下面的示例中,DelayAsync 是一個異步方法,包含回傳整數的 return 陳述句, 由于它是異步方法,其方法宣告必須具有回傳型別 Task, 因為回傳型別是 Task,await 中 DoSomethingAsync 運算式的計算將如以下 int result = await delayTask 陳述句所示得出整數,
using System;
using System.Diagnostics;
using System.Threading.Tasks;
public class Example
{
// This Click event is marked with the async modifier.
public static void Main()
{
DoSomethingAsync().Wait();
}
private static async Task DoSomethingAsync()
{
int result = await DelayAsync();
Console.WriteLine("Result: " + result);
}
private static async Task<int> DelayAsync()
{
await Task.Delay(100);
return 5;
}
// Output:
// Result: 5
}
// The example displays the following output:
// Result: 5
異步方法不能宣告任何 in、ref 或 out 引數,但是可以呼叫具有這類引數的方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/49174.html
標籤:C#
上一篇:【劍指Offer】數值的整數次方
下一篇:用C#寫個小程式爬取漫畫
