亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#中內(nèi)置的泛型委托Func與Action

admin
2024年1月24日 15:5 本文熱度 1892

簡介

從C# 3.0起很少需要自己聲明委托。System.Func 是一個泛型委托,它可以表示帶有返回值的方法。它可以接受一個到多個輸入?yún)?shù),并返回一個指定類型的結(jié)果。System.Func 委托的最后一個類型參數(shù)表示方法的返回值類型。而System.Action系列代表返回void的方法。

Func委托

說明

Func委托有很多種形式,如下所示:

這里以Func<T,TResult>為例說明該委托的用法。

原型如下所示:

public delegate TResult Func<in T,out TResult>(T arg);

結(jié)合前面文章委托(一)中對于委托類型的圖解:

那么這個內(nèi)置泛型委托的圖解如下:

示例

依據(jù)前面的文章委托(一)中使用委托的步驟來說明這個內(nèi)置泛型委托的用法:

由于這個是內(nèi)置的泛型委托,包含在System.Runtime.dll程序集中,不是自定義的委托類型,因此不需要自己聲明這個委托類型,而是聲明這個泛型委托變量:

Func<stringstring> selector;

然后創(chuàng)建委托實例,并添加第一個方法:

 selector= str => str.ToUpper();

這里使用了lambda表達式,以后再進行解釋。這里將聲明委托變量與實例化分開了,一般可以將這兩個步驟合并,如下所示:

 Func<stringstring> selector = str => str.ToUpper();

這個委托對象的圖解如下所示:

調(diào)用這個委托對象:

 string[] words = { "orange""apple""Article""elephant" };
   
 IEnumerable<String> aWords = words.Select(selector);
 
  foreach (String word in aWords)
     Console.WriteLine(word);

結(jié)果如下所示:

其實也可以直接在select中直接寫一個lambda表達式,這種方式更常見:

string[] words = { "orange""apple""Article""elephant" };
  
IEnumerable<String> aWords = words.Select(x => x.ToUpper());

 foreach (String word in aWords)
    Console.WriteLine(word);

輸出結(jié)果如下所示:

其實是一樣的。

查看select方法說明:

它的參數(shù)類型就是一個參數(shù)類型為string返回值類型為string的內(nèi)置func委托類型。

Lambda表達式的類型是由編譯器隱式推斷的,它通常表示為委托類型或表達式樹類型,具體取決于上下文。最常見的用法是將Lambda表達式賦值給委托類型或傳遞給接受委托類型參數(shù)的方法。

以上就是C#中的內(nèi)置泛型委托func的介紹與用法示例,希望對你有所幫助。

Action委托

Action委托也有很多形式,如下所示:

本文以Action<T>這種形式來說明C#中內(nèi)置的泛型Action委托的用法。

該委托類型的原型如下所示:

public delegate void Action<in T>(T obj);

它的圖解如下所示:

示例

聲明委托類型的變量:

Action<string> action;

實例化該委托變量,即為委托添加方法:

void showMessage(string message)
{
    Console.WriteLine(message);
}
action = showMessage;

但是一般可以合為一步:

Action<string> action = showMessage;

void showMessage(string message)
{
    Console.WriteLine(message);
}         

調(diào)用委托:

string[] words = { "orange""apple""Article""elephant" };
foreach(var word in words) 

    action(word);
}

輸出結(jié)果如下所示:

image-20231204150654969

但是可以發(fā)現(xiàn)我們的代碼寫的還不構(gòu)簡潔,用到了另外聲明的方法,其實可以用Lambda表達式來寫方法,不需要自己另外寫:

 static void Main(string[] args)
 {
     Action<string> action = (x) => 
     {
         Console.WriteLine(x);
     };
          
     string[] words = { "orange""apple""Article""elephant" };
     foreach(var word in words) 
     { 
         action(word);
     }
 }

輸出結(jié)果如下所示:

以上就是C#中的內(nèi)置泛型委托Action的介紹與用法示例,希望對你有所幫助。

ref

Action Delegate (System) | Microsoft Learn

Func Delegate (System) | Microsoft Learn


該文章在 2024/1/24 15:05:58 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved