C# Func用法

C# Func用法

在 C# 中,Func 是一個委託類型,用於表示具有返回值的方法。Func 委託可以有零個或多個輸入參數,但必須有一個返回值。這使得 Func 非常適合用來封裝那些需要計算並返回結果的方法。

基本語法

Func 委託的定義如下:

Func<in T1, in T2, ..., out TResult>

T1, T2, ... 是輸入參數的類型。

TResult 是返回值的類型。

示例

以下是一些 Func 的常見用法示例:

1.沒有參數,返回一個值

Func<int> getRandomNumber = () => new Random().Next(1, 100);
int number = getRandomNumber();
Console.WriteLine(number);

這個例子中,getRandomNumber 是一個沒有輸入參數但返回一個隨機數的 Func<int> 委託。

2.一個參數,返回一個值

Func<int, int> square = x => x * x;
int result = square(5);
Console.WriteLine(result); // Output: 25

3.多個參數,返回一個值

Func<int, int, int> add = (a, b) => a + b;
int sum = add(3, 4);
Console.WriteLine(sum); // Output: 7

在這個例子中,add 是一個接受兩個整數並返回它們和的 Func<int, int, int>

Func 的優點

  • 簡潔:使用 Func 可以減少冗長的代碼,特別是在使用匿名方法或 Lambda 表達式時。
  • 靈活:可以將方法作為參數傳遞給其他方法,這在 LINQ 查詢中非常常見。

Action 的比較

FuncAction 類似,但 Action 沒有返回值。Func 總是有返回值,因此如果你需要一個不返回值的委託,應該使用 Action

綜合應用

例如,在 LINQ 查詢中,你經常會看到 Func 被用來定義投影或過濾邏輯:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
List<int> squaredNumbers = numbers.Select(x => x * x).ToList();

在這裡,Select 方法接受一個 Func<int, int>,該委託將每個元素映射為其平方。

這就是 Func 在 C# 中的基本用法。它是一個非常強大的工具,允許你以更靈活和簡潔的方式處理方法和邏輯。

 

其他範例

void Main()
{
	Func<string, bool> funcA = x => x.StartsWith("A");
	
	funcA("01").Dump();  //False
	funcA("A01").Dump();  //True
}

比較傳入字串是否為A開頭

 

留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記