我认为一个委托实例可以与函数实例互换.
采取以下代码:
delegate int AddDelegate(int a,int b); AddDelegate DelegateInstance; public void DoStuff() { //I can call this without a delegate "instance": MethodThatTakesAdd(Add); //I can also call it WITH a delegate "instance" DelegateInstance = Add; MethodThatTakesAdd(DelegateInstance); } public int Add(int a,int b) { return a + b; } public void MethodThatTakesAdd(AddDelegate addFunction) { Console.WriteLine(addFunction(1,2).ToString()); }
调用它的两种方法都是等同的,如果你只使用C#,你将永远不会看到差异(至少我还没有达到这一点).但是,最近我是一个非托管代码,正在调用这个托管代码,它们被不同的对待.例如,在一种情况下,如果我将函数直接用作回调(即使我的对象实例被保留),我将收到错误“回收一个垃圾收集的委托”.使用“委托实例”来解决问题.
那里有人知道有什么区别吗?
解决方法
原文地址:https://www.jb51.cc/csharp/91203.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。