Почему TimeSpan и Guid Struct сравниваются с нулем?

Мы заметили, что некоторые структуры .NET можно сравнить с нулем. Например:

  TimeSpan y = new TimeSpan();
        if (y == null)
            return;

скомпилируется очень хорошо (то же самое со структурой Guid).

Теперь я знаю, что структуры являются типом значений и что приведенный выше код не должен компилироваться, еслиs перегрузка оператора ==, который принимает объект. Но, насколько я могу судить, нетt.I»

Мы посмотрели на класс с Reflector, а также на документы по MSDN.

Два из них реализуют следующие интерфейсы:

IComparable, IComparable, IEquatable

но попытка реализовать те же интерфейсы, похоже, не помогла:

struct XX : IComparable, IComparable, IEquatable {
    public int CompareTo(Object obj) {
        return 0;
    }
    public int CompareTo (XX other){
        return 0;
    }
    public bool Equals (XX other){
        return false;
    }
    public override bool Equals(object value){
        return false;
    }
    public static int Compare(XX t1, XX t2){
        return 0;
    }
}

м: .NET 2.0 Visual Studio 2005.

Кто-нибудь знает, чтопричина этого? Я просто пытаюсь лучше понять. Это н'это не проблема, поскольку я знаю, что не долженв любом случае я не могу сравнивать структуры с нулем.

Ответы на вопрос(5)

Ваш ответ на вопрос