Отсутствует тип CTS делает это, насколько я знаю. Хорошие примеры включают Десятичные и DateTime, которые реализуют равенство только для своих типов, а не для их базовых типов или интерфейсов.
Кроме того, эта реализация может стимулировать сравнения практически любой типа с вашей структурой, даже другие структуры, а кто-то, кто мог бы использовать свой код в будущем может думать, сравнивая MyType с MyOtherType может иметь смысл, в то время как все это будет do - это бокс другого типа, а затем возврат false. Также обычно интерпретируется ==
на object
как означающее ссылочное равенство.
Кроме того, вы должны перегрузить op_Equality и op_Inequality операторы. Это гарантирует, что все тесты для равенства возвращают согласованные результаты.
The documentation не сказать, какие операторы равенства следует перегружать, а второе предложение может фактически быть интерпретированы в терминах MyType == object
быть в соответствии с MyType.Equals(object)
. Однако тот факт, что никакие типы .NET на самом деле не делают этого и что приводит к путанице, достаточно, чтобы сказать, что это не очень хорошая практика.
Если другие типы можно рассматривать как MyType, перегрузите явный или неявный литой.
Не могли бы вы привести пример использования этого оператора? – HimBromBeere
@HimBromBeere добавлено – sdgfsdh
@HimBromBeere - не было бы 'as' cast никогда не возвращать' null', потому что его 'struct'? – Igor