c#中泛型委托的示例代码分享(图)
本文主要介绍了c#中的泛型委托。具有很好的参考价值,下面跟着小编一起来看下吧
今天学习一下c#中的泛型委托。
1.一般的委托,delegate,可以又传入参数(<=32),声明的方法为 public delegate void SomethingDelegate(int a);
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace delegateSummary { public delegate void GetIntDelegate(int a); //声明一个委托 public class getIntClass { public static void SetDelegateString(int a,GetIntDelegate getIntDelegate) {//使用委托 getIntDelegate(a); } public void getInt1(int a) { //方法1 Console.WriteLine("getInt1方法调用,参数为:" + a); } public void getInt2(int a) { //方法2 Console.WriteLine("getInt2方法调用,参数为:" + a); } } class Program { static void Main(string[] args) { getIntClass gc=new getIntClass(); getIntClass.SetDelegateString(5, gc.getInt1); //方法1,2作为委托的参数 getIntClass.SetDelegateString(10, gc.getInt2); Console.WriteLine("====================="); GetIntDelegate getIntDelegate; getIntDelegate = gc.getInt1; //将方法1,2绑定到委托 getIntDelegate += gc.getInt2; getIntClass.SetDelegateString(100, getIntDelegate); Console.Read(); } } }
输出结果,注意两种方式的不同,第一种将方法作为委托的参数,第二种是将方法绑定到委托。
2.泛型委托之Action,最多传入16个参数,无返回值。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace delegateSummary { class Program { static void Main(string[] args) { TestAction<string>(getString, "WhiteTaken"); //传入方法 TestAction<int>(getInt, 666); TestAction<int, string>(getStringAndInt, 666, "WhiteTaken"); Console.Read(); } public static void TestAction<T>(Action<T> action,T p1) { //Action传入一个参数测试 action(p1); } public static void TestAction<T, P>(Action<T, P> action, T p1, P p2) { //Action传入两个参数测试 action(p1,p2); } public static void getString(string a) { //实现int类型打印 Console.WriteLine("测试Action,传入string,并且传入的参数为:" +a); } public static void getInt(int a) { //实现String类型打印 Console.WriteLine("测试Action,传入int,并且传入的参数为:" + a); } public static void getStringAndInt(int a, string name) { //实现int+string类型打印 Console.WriteLine("测试Action,传入两参数,并且传入的参数为:" + a+":"+name); } } }
测试结果:
3.泛型委托之Func,最多传入16个参数,有返回值。(写法与Action类似,只是多了返回值)
4.泛型委托之predicate(不是很常用),返回值为bool,用在Array和list中搜索元素。(没有用到过,等用到了再更新)
以上是c#中泛型委托的示例代码分享(图)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用 C# 的 Active Directory 指南。在这里,我们讨论 Active Directory 在 C# 中的介绍和工作原理以及语法和示例。

多线程和异步的区别在于,多线程同时执行多个线程,而异步在不阻塞当前线程的情况下执行操作。多线程用于计算密集型任务,而异步用于用户交互操作。多线程的优势是提高计算性能,异步的优势是不阻塞 UI 线程。选择多线程还是异步取决于任务性质:计算密集型任务使用多线程,与外部资源交互且需要保持 UI 响应的任务使用异步。
