委托使用方法

原来是想写一篇关于委托的博客的,但是看了http://www.tracefact.net/tech/009.html关于C#委托的博客,不想写了

怎么写都不会有人家的好。

 

 

 

一、将方法作为参数传递

https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/delegates

委托类型表示对具有特定参数列表和返回类型的方法的引用。 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。 委托类似于其他一些语言中的函数指针概念,但与函数指针不同的是,委托不仅面向对象,还类型安全。

using System;
delegate double Function(double x);
class Multiplier
{
    double factor;
    public Multiplier(double factor) 
    {
        this.factor = factor;
    }
    public double Multiply(double x) 
    {
        return x * factor;
    }
}
class DelegateExample
{
    static double Square(double x) 
    {
        return x * x;
    }
    static double[] Apply(double[] a, Function f) 
    {
        double[] result = new double[a.Length];
        for (int i = 0; i < a.Length; i++) result[i] = f(a[i]);
        return result;
    }
    static void Main() 
    {
        double[] a = {0.0, 0.5, 1.0};
        double[] squares = Apply(a, Square);
        double[] sines = Apply(a, Math.Sin);
        Multiplier m = new Multiplier(2.0);
        double[] doubles =  Apply(a, m.Multiply);
    }
}

二、调用事件

是带event关键字的委托实例

访问修饰符 event 委托名 事件名;

 public partial class FormMeasureResult : Form
    {
        //委托
        public delegate void FormClosedEventHandler();
        public event FormClosedEventHandler frmClosed = null;

        public FormMeasureResult()
        {
            InitializeComponent();
        }

        private void FormMeasureResult_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (frmClosed != null)
            {
                frmClosed();
            }
        }
    }


 private void frmMeasureResult_frmColsed()  //FormColsed事件
        {
            //清空线对象
            if (pNewLineFeedback != null)
            {
                pNewLineFeedback.Stop();
                pNewLineFeedback = null;
            }
            //清空面对象
            if (pNewPolygonFeedback != null)
            {
                pNewPolygonFeedback.Stop();
                pNewPolygonFeedback = null;
                pAreaPointCol.RemovePoints(0, pAreaPointCol.PointCount); //清空点集中所有点
            }
            //清空量算画的线、面对象
            axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null);
            //结束量算功能
            pMouseOperate = string.Empty;
            axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在LabVIEW中,可以使用委托来实现事件的处理。委托是一种特殊的数据类型,它可以存储对方法的引用,并允许在需要时调用这些方法。在LabVIEW中,可以使用静态VI引用和严格类型的VI引用来实现委托。\[1\] 在LabVIEW中,可以通过以下步骤来使用委托: 1. 创建一个事件响应VI,并将其设置为静态VI引用。 2. 在事件响应VI的前面板上设置输入和输出接线,包括事件数据、控件引用和其他需要用到的用户参数。 3. 在LabVIEW代码中,使用委托来订阅事件并指定事件处理程序。可以使用LabVIEW的事件结构来实现这一点。 4. 当事件发生时,LabVIEW会自动调用相应的事件处理程序,处理事件数据并执行其他必要的操作。 以下是一个示例代码,演示了如何在LabVIEW中使用委托: 1. 创建一个事件响应VI,并将其设置为静态VI引用。 2. 在事件响应VI的前面板上设置输入和输出接线,包括事件数据、控件引用和其他需要用到的用户参数。 3. 在LabVIEW代码中,使用委托来订阅事件并指定事件处理程序。可以使用LabVIEW的事件结构来实现这一点。 4. 当事件发生时,LabVIEW会自动调用相应的事件处理程序,处理事件数据并执行其他必要的操作。 请注意,LabVIEW中的委托使用方法可能与C#中的委托略有不同。在LabVIEW中,可以使用事件结构和事件响应VI来实现委托的功能。\[1\] #### 引用[.reference_title] - *1* [labview响应C#动态链接库中的事件](https://blog.csdn.net/qq_30278319/article/details/82186874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#委托的介绍(delegate、Action、Func、predicate)](https://blog.csdn.net/NCTU_to_prove_safety/article/details/72728488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [像Labview一样,使用C#构建测量数据流式处理框架](https://blog.csdn.net/weixin_34128534/article/details/88754206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z6q6k6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值