加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MyGuid.Equals(OtherGuid)不等于?

发布时间:2020-12-15 19:36:58 所属栏目:百科 来源:网络整理
导读:当我使用MyGuid.ToString().Equals(OtherGuid.ToString())时 他们是平等的,为什么当我比较纯粹的Guid时他们不平等? 更新: 那么这里的问题可能是我使用了第三方控件. 下面的.Key有一个Guid,委员会也是一个Guid.只有当我这样做时,它们才是平等的 两个Guid上
当我使用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))

你说过:

The .Key below has a Guid and committeeId is a Guid too.

你在Guid上调用ToString()而不是在CommissionId上,所以这个条件永远不会成立.如果你在两者上调用ToString(),或者两者都不应该没问题.

我强烈怀疑这个(或者非常类似的东西,如果以上不是你真正的代码)是问题.多次调用ToString()(即guid.ToString().ToString()等)总会返回相同的字符串 – 所以如果你有一个不平衡的ToString()调用次数(一边是0,一边是1)另一个)然后向双方添加一个额外的调用将“修复”问题…但删除其中一个ToString()调用是真正的修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读