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

C# 中Func 的用法小結(jié)

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

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

一、基本定義與語(yǔ)法

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

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

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

二、常用形式與示例

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

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

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

// 調(diào)用
int total = sum(1, 2, 3); // 結(jié)果:6

三、Func 的典型用法

  • 作為方法參數(shù)(傳遞邏輯)
    將 Func 作為參數(shù)傳入方法,使方法可以動(dòng)態(tài)執(zhí)行不同邏輯,類似 “回調(diào)函數(shù)”。
// 定義一個(gè)使用Func的方法:對(duì)數(shù)組中的每個(gè)元素執(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實(shí)現(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); // 結(jié)果:[2,4]

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

// 多次復(fù)用
string res1 = processString("  test  ", "123"); // 結(jié)果:"test123"
string res2 = processString(null, "456"); // 結(jié)果:"默認(rèn)值456"

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

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

示例對(duì)比:

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

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

五、總結(jié)

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

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

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

相關(guān)文章

  • Unity3D應(yīng)用之時(shí)鐘與鐘表小組件的使用教程

    Unity3D應(yīng)用之時(shí)鐘與鐘表小組件的使用教程

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

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

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

    C#基礎(chǔ)語(yǔ)法:Base關(guān)鍵字學(xué)習(xí)筆記

    這篇文章主要介紹了C#基礎(chǔ)語(yǔ)法:Base關(guān)鍵字學(xué)習(xí)筆記,本文講解了它的一些基礎(chǔ)知識(shí)以及測(cè)試代碼,需要的朋友可以參考下
    2015-06-06
  • Unity 點(diǎn)擊UI與點(diǎn)擊屏幕沖突的解決方案

    Unity 點(diǎn)擊UI與點(diǎn)擊屏幕沖突的解決方案

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

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

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

    C#中IntPtr類型的具體使用

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

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

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

    Silverlight實(shí)現(xiàn)星星閃爍動(dòng)畫(huà)

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

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

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

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

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

最新評(píng)論

神木县| 天长市| 宜城市| 陕西省| 南华县| 阿克陶县| 瑞丽市| 阳原县| 东山县| 始兴县| 北辰区| 林芝县| 呼玛县| 元朗区| 内乡县| 于都县| 黄浦区| 尉犁县| 安化县| 五峰| 永新县| 巴林左旗| 芮城县| 习水县| 西峡县| 马山县| 黎川县| 应城市| 湟源县| 怀仁县| 永安市| 云南省| 盐山县| 盐津县| 长丰县| 盖州市| 抚松县| 堆龙德庆县| 长春市| 来安县| 贡山|