最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 中Func 的用法小結

 更新時間:2025年11月27日 09:05:19   作者:CHEstudy  
本文主要介紹了C#中Func的用法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在 C# 中,F(xiàn)unc 是一個泛型委托類型,用于表示有返回值的方法,它是 .NET 框架提供的預定義委托,無需手動聲明即可直接使用。Func 的核心作用是封裝具有特定參數(shù)列表和返回值的方法,常用于 lambda 表達式、匿名方法或作為方法參數(shù)傳遞,使代碼更簡潔靈活。

一、基本定義與語法

Func 是泛型委托,定義格式為:

Func<參數(shù)類型1, 參數(shù)類型2, ..., 返回值類型>
  • 特點

    • 最少需要指定返回值類型(即至少有 1 個類型參數(shù),代表返回值)。
    • 最多可以有 16 個輸入?yún)?shù) + 1 個返回值類型(共 17 個類型參數(shù))。
    • 無參數(shù)但有返回值時,使用 Func<返回值類型>。

二、常用形式與示例

  • 無參數(shù),有返回值(Func)
// 定義:無參數(shù),返回string
Func<string> getTime = () => DateTime.Now.ToString("HH:mm:ss");
// 調用
string currentTime = getTime(); // 結果:當前時間字符串,如 "15:30:20"
  • 1 個參數(shù),有返回值(Func<T, TResult>)
// 定義:輸入int,返回其平方(int)
Func<int, int> square = x => x * x;

// 調用
int result = square(5); // 結果:25
  • 2 個參數(shù),有返回值(Func<T1, T2, TResult>)
// 定義:輸入兩個string,返回拼接結果
Func<string, string, string> combine = (a, b) => $"{a}-";

// 調用
string str = combine("Hello", "World"); // 結果:"Hello-World"
  1. 多參數(shù)(如 3 個參數(shù))
// 定義:輸入三個int,返回它們的和
Func<int, int, int, int> sum = (a, b, c) => a + b + c;

// 調用
int total = sum(1, 2, 3); // 結果:6

三、Func 的典型用法

  • 作為方法參數(shù)(傳遞邏輯)
    將 Func 作為參數(shù)傳入方法,使方法可以動態(tài)執(zhí)行不同邏輯,類似 “回調函數(shù)”。
// 定義一個使用Func的方法:對數(shù)組中的每個元素執(zhí)行func邏輯并返回新數(shù)組
int[] ProcessArray(int[] array, Func<int, int> func)
{
    int[] result = new int[array.Length];
    for (int i = 0; i < array.Length; i++)
    {
        result[i] = func(array[i]); // 執(zhí)行傳入的邏輯
    }
    return result;
}

// 使用:傳入不同的Func實現(xiàn)不同功能
int[] numbers = { 1, 2, 3, 4 };
int[] squares = ProcessArray(numbers, x => x * x); // 求平方:[1,4,9,16]
int[] doubles = ProcessArray(numbers, x => x * 2); // 翻倍:[2,4,6,8]
  • 配合 LINQ 查詢
    LINQ 中大量使用 Func 作為參數(shù),例如 Where、Select 等方法:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

// Where方法接收Func<int, bool>:篩選出偶數(shù)
var evenNumbers = numbers.Where(n => n % 2 == 0); // 結果:[2,4]

// Select方法接收Func<int, string>:轉換為字符串
var numberStrings = numbers.Select(n => $"數(shù)字:{n}"); // 結果:["數(shù)字:1", "數(shù)字:2", ...]
  • 簡化復雜邏輯的封裝
    當需要多次復用某段邏輯時,用 Func 封裝可減少代碼冗余:
// 封裝“字符串處理”邏輯
Func<string, string, string> processString = (input, suffix) => 
{
    if (string.IsNullOrEmpty(input))
        return "默認值";
    return input.Trim() + suffix;
};

// 多次復用
string res1 = processString("  test  ", "123"); // 結果:"test123"
string res2 = processString(null, "456"); // 結果:"默認值456"

四、Func 與 Action 的區(qū)別

1.Func:有返回值(至少需要指定返回值類型)。
2. Action:無返回值(專注于執(zhí)行操作,參數(shù)列表與 Func 類似,但無返回值類型)。

示例對比:

// Func(有返回值)
Func<int, int> addOne = x => x + 1;

// Action(無返回值)
Action<int> printNumber = x => Console.WriteLine(x);

五、總結

Func 是 C# 中處理 “有返回值的方法封裝” 的強大工具,其核心優(yōu)勢在于:

  1. 簡化代碼:無需手動聲明委托類型,直接使用預定義的 Func。
  2. 靈活傳遞邏輯:作為參數(shù)傳遞時,可動態(tài)切換方法行為(如 LINQ、回調函數(shù))。
  3. 配合 lambda 表達式:使代碼更簡潔,可讀性更高。
    掌握 Func 的用法,能極大提升 C# 代碼的靈活性和可維護性,尤其在 LINQ、委托回調等場景中必不可少。

到此這篇關于C# 中Func 的用法小結的文章就介紹到這了,更多相關C# Func用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Unity3D應用之時鐘與鐘表小組件的使用教程

    Unity3D應用之時鐘與鐘表小組件的使用教程

    這篇文章主要來和大家詳細介紹一下Unity3D應用開發(fā)中的時鐘和鐘表小組件的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-01-01
  • C# SimpleJSON字典反序列化實戰(zhàn)教程

    C# SimpleJSON字典反序列化實戰(zhàn)教程

    C# 解析JSON道路千萬條,其中最流行的還是由Newtonsoft出品的Json.NET,只需要將Json的結構做成C#的class,即可實現(xiàn)完美的序列化和反序列化,這篇文章主要介紹了C# SimpleJSON字典反序列化實戰(zhàn)教程,需要的朋友可以參考下
    2024-03-03
  • C#基礎語法:Base關鍵字學習筆記

    C#基礎語法:Base關鍵字學習筆記

    這篇文章主要介紹了C#基礎語法:Base關鍵字學習筆記,本文講解了它的一些基礎知識以及測試代碼,需要的朋友可以參考下
    2015-06-06
  • Unity 點擊UI與點擊屏幕沖突的解決方案

    Unity 點擊UI與點擊屏幕沖突的解決方案

    這篇文章主要介紹了Unity 點擊UI與點擊屏幕沖突的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#如何獲取枚舉的描述屬性詳解

    C#如何獲取枚舉的描述屬性詳解

    這篇文章主要給大家介紹了關于C#如何獲取枚舉的描述屬性的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • C#中IntPtr類型的具體使用

    C#中IntPtr類型的具體使用

    本文主要介紹了C#中IntPtr類型的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#中ToString數(shù)據(jù)類型格式大全(千分符)

    C#中ToString數(shù)據(jù)類型格式大全(千分符)

    這篇文章主要介紹了C#中ToString數(shù)據(jù)類型格式大全 千分符,需要的朋友可以參考下
    2017-02-02
  • Silverlight實現(xiàn)星星閃爍動畫

    Silverlight實現(xiàn)星星閃爍動畫

    這篇文章主要為大家詳細介紹了Silverlight實現(xiàn)星星閃爍動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • C#使用密封類實現(xiàn)密封用戶信息的示例詳解

    C#使用密封類實現(xiàn)密封用戶信息的示例詳解

    在C#中,密封類(sealed class)是一種不能被其他類繼承的類,它用于防止其他類繼承它的功能和屬性, 下面我們就來看看如何使用密封類密封用戶的信息吧
    2024-02-02
  • C#判斷字符是否為漢字的三種方法分享

    C#判斷字符是否為漢字的三種方法分享

    判斷一個字符是不是漢字通常有三種方法,第一種用 ASCII 碼判斷,第二種用漢字的 UNICODE 編碼范圍判 斷,第三種用正則表達式判斷,以下是具體方法
    2014-01-01

最新評論

青河县| 若羌县| 鄢陵县| 买车| 莱芜市| 大田县| 石泉县| 安平县| 胶南市| 商丘市| 宜宾县| 潼关县| 德钦县| 宜川县| 江城| 巴林左旗| 韩城市| 红原县| 惠水县| 自治县| 阆中市| 梅州市| 郑州市| 瑞昌市| 安义县| 青冈县| 勃利县| 榆社县| 阿拉善盟| 托克托县| 五峰| 临澧县| 罗田县| 右玉县| 深州市| 合江县| 东明县| 城固县| 石狮市| 晴隆县| 庆安县|