csharp C#委托示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp C#委托示例相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DeleGate
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            doing();
        }

        private string floatToString(float f)
        {
            return f.ToString();
        }

        // 情形是我只能用 float 做 function
        // 使用匿名函數結合 Action 委派
        // 其實最清楚的做法可以把匿名函數分出去

        private void doing()
        {
            // 委派匿名函數(中括號內的事情)到 doAct 的變數 Act01
            doAct((string str) =>
            {
                MessageBox.Show(str);
            });
        }

        private void doAct(Action<string> Act)
        {
            // 藉由 doing 裡面傳入的匿名函數(中括號內的事情),已經得到 Act01
            doAct((f) =>                        // 若參數非模稜兩可的話,可以不用宣告
            {
                string s = floatToString(f);    // 因為 floatToString 只定義 float 可以用,所以沒有模稜兩可
                Act(s);                         // 所以這裡是用第 33 行 的匿名函數,也就是傳入的 Action
            });
        }

        private void doAct(Action<float> Act)
        {
            float b = 1.0f;                     // doAct 用 overloading
            b += 0.5f;

            Act(b);                             // 所以這裡是用第 42 行 的匿名函數,也就是傳入的 Action
        }

        // ===================================================================================================

        void show(string str)
        {
            MessageBox.Show(str);
        }

        void show(float f)
        {
            string s = floatToString(f);
            show(s);
        }

        private void Ndoing()
        {
            Action<string> actS = show;
            NdoAct(actS);
        }

        private void NdoAct(Action<string> Act)
        {
            Action<string> actF = show;
            NdoAct(actF);
        }

        private void NdoAct(Action<float> Act)
        {
            float b = 1.0f;
            b += 0.5f;

            Act(b);                           
        }
    }
}

以上是关于csharp C#委托示例的主要内容,如果未能解决你的问题,请参考以下文章

csharp 示例 - CSHARP - 报告 - GenerateReport-GenerateCommonMasterDetailReportFromJsoninPresentation.c

csharp 示例 - CSHARP - 报告 - GenerateReport-GenerateInTableMasterDetailReportFromJsoninSpreadsheet.c

对张子扬显示的两篇委托和事件说得很透文章读后的思考

csharp 可映射示例C#

csharp .NET EntityFramework加密示例(C#)

csharp C#创建文件夹的示例