1. 程式人生 > 其它 >C#中Action和Func學習筆記

C#中Action和Func學習筆記

技術標籤:c#delegate

C#中Action和Func學習筆記

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Action和Func
{
    class Program
    {
        static void Main(string[] args)
        {
            ActionAndFuncShow();
            
            Console.
ReadKey(); } static void ActionAndFuncShow() { Console.WriteLine("Action"); //Action 沒有返回值的委託,引數可以從0到16個的泛型委託 Action action1 = () => { }; action1(); Action<int> action2 = i => Console.
WriteLine(i); action2(2); Action<int, string> action3 = (i, s) => Console.WriteLine($"i={i} s={s}"); action3(2, "222"); Console.WriteLine("Func"); //Func 帶返回值的委託 Func<int> func1 = () =
> 1;//int型別返回值 Console.WriteLine(func1()); Func<int, string> func2 = i => i.ToString();//string型別返回值 Console.WriteLine(func2(2)); Func<int, string, DateTime> func3 = (i, s) => DateTime.Now;//DateTime型別返回值 Console.WriteLine(func3(3,"3")); //Func的最後一個引數是返回值 DoNothing(action1); NoReturnNoPara method = () => { }; //DoNothing(method);Action和NoReturnNoPara雖然都是無引數無返回值型別,但是他們兩個是獨立的例項,所以無法這樣使用 //為什麼會有Action和Func //很多委託長得一樣,引數列表,返回值型別都一樣,但不能通用, //在不同框架元件定義各種各樣的相同委託,就是浪費, //為了統一,就全部使用了標準的Action和Func } public delegate void NoReturnNoPara(); private static void DoNothing(Action act) { act.Invoke(); } } }