c 方法 一個方法是把一些相關的語句組織在一起,用來執行一個任務的語句塊。 方法簽名 通過指定在 或 中聲明方法: 可選的訪問級別,如 或 。 預設值為 。 可選的修飾符,如 或 。 返回值,或 (如果該方法不具有)。 方法名。 任何方法參數。 方法參數在括弧內,並且用逗號分隔。 空括弧指示方法不需 ...
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 參數,但是可以調用具有這類參數的方法。