当我使用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;
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
我无法重现这个问题:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
生产:
True
True
True
Run Code Online (Sandbox Code Playgroud)
请提供类似的简短但完整的程序来说明问题.
编辑:我想我现在看到了问题,它在你的代码中:
if (ultraCalendarInfo.Owners[i].Key.ToString().Equals(committeeId))
Run Code Online (Sandbox Code Playgroud)
你说过:
在
.Key下面有一个GUID并且committeeId是一个GUID了.
你正在呼唤ToString()Guid,但没有打开committeeId,因此这种情况永远不会成真.如果你叫ToString()上两个或既不应该罚款.
我强烈怀疑这个(或者非常类似的东西,如果以上不是你真正的代码)是问题.当然,ToString()多次调用(即guid.ToString().ToString()等等)将始终返回相同的字符串 - 因此,如果您的ToString()呼叫数量不平衡(一方为0而另一方为1),则向双方添加额外呼叫将 "修复"问题...但删除其中一个ToString()电话是真正的修复.
| 归档时间: |
|
| 查看次数: |
8252 次 |
| 最近记录: |