委托_deleget
Posted jeely
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了委托_deleget相关的知识,希望对你有一定的参考价值。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* //由框架提供的委托类型 //无返的 Action act0 = () => Console.WriteLine("无参无返"); Action<int> act1 = x => Console.WriteLine("1 参无返"); Action<int, int> act2 = (x, y) => Console.WriteLine("2 参无返"); //有返的 Func<string> func0 = () => "无参有返"; Func<int, string> func1 = x => "1 参有返"; Func<int, double, string> func2 = (x, y) => "多参有返"; */ namespace 委托_deleget // 1、声明委托 //就声明方法模版加 deleget 修饰 //就是把方法转义成类,同时指定这个类的使用规则,如 返、参的类型或数量 public delegate void nRnC(); public delegate int hRnC(); delegate string hRhC(string a, int b); class Program // 2、定义供委托调用的方法 private static void for_nRnC_1() Console.WriteLine("for_nRnC_1"); private static void for_nRnC_2() Console.WriteLine("for_nRnC_2"); private static string for_hRhC(string a, int v) string temp = null; for (int i = 0; i < v; i++) temp += a; return temp; static void Main(string[] args) // 3、实例化委托对象,它包括一个调用方法列表 //无参无返 nRnC myDeleget_nRnC = new nRnC(for_nRnC_1); //有参有返, hRhC myDeleget_hRhC = new hRhC(for_hRhC); // 4、使用(执行)委托 // nRnC myDeleget_nRnC.Invoke(); //hRhC string ret = myDeleget_hRhC("batu", 5); Console.WriteLine(ret); //多波委托,返回值为最后一个方法的返回值 myDeleget_nRnC += for_nRnC_2; myDeleget_nRnC -= for_nRnC_2; Console.Read(); //事件_Event class EventTest void doSomeThing() ForEvent myTest = new ForEvent(); myTest.shijian += MyTest_shijian; //myTest.shijian = MyTest_shijian; //myTest.shijian(); myTest.weituo = MyTest_shijian; myTest.weituo(); private void MyTest_shijian() ; ; ; class ForEvent //这是一个属性,可以直接赋值和执行 //相当于把类内部的方法直接暴露出来 public nRnC weituo set; get; //这是一个事件,只能 += 或 -= 且不能从外部调用 //Event 的用作是,控制对象的权限, //在外部只能向这个事件上挂方法或删方法,不能执行,也不能改变原有方法 public event nRnC shijian;
以上是关于委托_deleget的主要内容,如果未能解决你的问题,请参考以下文章
C#委托和事件框架封装简写 delegateeventActionEventHandler
C#委托和事件框架封装简写 delegateeventActionEventHandler
C#委托和事件框架封装简写 delegateeventActionEventHandler
对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段