Я не могу воспроизвести проблему:
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))
Вы заявили:
У .Key
ниже есть Guid и committeeId
тоже Guid.
Вы звоните ToString()
по Guid, но не по committeeId
, так что условие никогда не будет выполнено.Если вы позвонили ToString()
на и или , либо , все должно быть в порядке.
Я сильно подозреваю, что это (или что-то очень похожее, если вышеприведенное неваш реальный код) это проблема.Вызов ToString()
более одного раза (т.е. guid.ToString().ToString()
и т. Д.), Конечно, всегда будет возвращать одну и ту же строку - поэтому, если у вас несбалансированное количество вызовов ToString()
(0 с одной стороны и 1 с другой), то добавлениедополнительный вызов в обе стороны "исправит" проблему ... но устранение одного из ToString()
вызовов - настоящее решение проблемы.