c# – MyGuid.Equals(OtherGuid)不等于?
当我使用MyGuid.ToString().Equals(OtherGuid.ToString())时
他们是平等的,为什么当我比较纯粹的Guid时他们不平等? 更新: 那么这里的问题可能是我使用了第三方控件. 下面的.Key有一个Guid,委员会也是一个Guid.只有当我这样做时,它们才是平等的 两个Guid上的ToString()它们都是奇怪的. for (int i = 0; i < this.ultraCalendarInfo.Owners.Count; i++) if (ultraCalendarInfo.Owners[i].Key.ToString().Equals(committeeId)) ultraCalendarInfo.Owners[i].Visible = isVisible; 解决方法
我无法重现这个问题:
using System; class Program { static void Main(string[] args) { Guid x = Guid.NewGuid(); Guid y = new Guid(x.ToString()); Console.WriteLine(x == y); Console.WriteLine(x.Equals(y)); Console.WriteLine(x.ToString() == y.ToString()); } } 生产: True True True 请提供类似的简短但完整的程序来说明问题. 编辑:我想我现在看到了问题,它在你的代码中: if (ultraCalendarInfo.Owners[i].Key.ToString().Equals(committeeId)) 你说过:
你在Guid上调用ToString()而不是在CommissionId上,所以这个条件永远不会成立.如果你在两者上调用ToString(),或者两者都不应该没问题. 我强烈怀疑这个(或者非常类似的东西,如果以上不是你真正的代码)是问题.多次调用ToString()(即guid.ToString().ToString()等)总会返回相同的字符串 – 所以如果你有一个不平衡的ToString()调用次数(一边是0,一边是1)另一个)然后向双方添加一个额外的调用将“修复”问题…但删除其中一个ToString()调用是真正的修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |