c#:行动无与伦比?
发布时间:2020-12-16 00:16:06 所属栏目:百科 来源:网络整理
导读:我想比较两个动作.与==的比较总是返回false,就像Equals-method一样,即使它是同一个实例. 我的问题是:这真的不可能,还是我做错了? 干杯 AC 解决方法 你做错了. 如果我相信你,当你说“即使它是同一个实例”,那么通过LINQPad执行的以下代码告诉我你必须做错了
我想比较两个动作.与==的比较总是返回false,就像Equals-method一样,即使它是同一个实例.
我的问题是:这真的不可能,还是我做错了? 干杯 解决方法
你做错了.
如果我相信你,当你说“即使它是同一个实例”,那么通过LINQPad执行的以下代码告诉我你必须做错了什么,或者“同一个实例”是不正确的: void Main() { Action a = () => Debug.WriteLine("test"); Action b = a; (a == b).Dump("=="); (a.Equals(b)).Dump("Equals"); object.ReferenceEquals(a,b).Dump("ReferenceEquals"); } 输出是: == True Equals True ReferenceEquals True 换句话说,==,a.Equals(b)和object.ReferenceEquals(a,b)都表示它是同一个实例. 另一方面,如果我复制代码: Action a = () => Debug.WriteLine("test"); Action b = () => Debug.WriteLine("test"); 然后他们都报错. 如果我将它们都链接到命名方法,而不是匿名方法: void Main() { Action a = Test; Action b = Test; (a == b).Dump("=="); (a.Equals(b)).Dump("Equals"); object.ReferenceEquals(a,b).Dump("ReferenceEquals"); } private static void Test() { } 然后输出是: == True Equals True ReferenceEquals False 换句话说,我现在有两个Action实例,而不仅仅是一个,但它们仍然相等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- react-native – 在没有Chrome调试的情况下React Native An
- configure: error: xml2-config not found. Please check y
- c# – 如何在WebBrowser中确认脚本错误对话框?
- oracle存储过程的动态游标的简单例子
- objective-c – 禁用UISearchBar
- 如何使用C#使Telegram bot API中的Keyboard Button消息文本
- c# – 如何在运行时分配数组值
- c# – 空气曲棍球比赛 – 如果移动得太快,球员蝙蝠会经过冰
- postgresql – 视图如何依赖于postgres中的主键约束
- SQLite介绍