創作內容

0 GP

進階 C# 編程技術(一) 委託與事件 - Action

作者:Aucer│2022-06-13 10:46:12│巴幣:0│人氣:91
using System;
using UnityEngine;

public class Project_Delegate_Action : MonoBehaviour
{
    //委託類型 【Action】範例

    //Action 不支持返回值
    Action mAction;
    Action<int, int> mAction2;

    // 使用Func來實現帶有返回值的委託調用
    // Func 可綁定帶有返回值的方法,並接收返回的結果
    
    void Start()
    {
        // // 第一種應用,將方法當成參數傳遞
        // Test(Test2);

        //第二中應用,將方法【Test2()】綁定到委託【mAction】,在委託調度時,將執行所有綁定方法
        mAction += Test2;
        mAction += Test3;
        mAction();

        //不需要調用時
        mAction -= Test3;
        mAction();

        // 傳遞參數
        // += 用於多個方法綁定
        // =  直接綁定唯一方法
        mAction2 = Test4;
        mAction2(100,300);

        //mAction2 += Test5; //傳回值報錯
        //因為Action不支持有返回值的方法,所以要用Func 綁定帶有返回值的方法,並接收返回的結果
    }

    public void Test(Action action)
    {
        Debug.Log("執行完Test方法!");
        if (action != null)
        {
            action();
        }
    }

    public void Test2()
    {
        Debug.Log("Test2 調用了!");
    }
    public void Test3()
    {
        Debug.Log("Test3 調用了!");
    }

    public void Test4(int a, int b)
    {
        Debug.Log("Result : " + (a + b));
    }
    // mAction2 綁定 Test5 時會報錯,因為 Action 不支持有返回值的方法綁定
    public int Test5(int a, int b)
    {
        return(a+b);
    }
}
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5484411
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★ck7william19 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:進階 C# 編程技術(一... 後一篇:進階 C# 編程技術(一...

追蹤私訊切換新版閱覽

作品資料夾

black0975???
今天天氣真好,很適合發脾氣。看更多我要大聲說昨天16:38


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】