То, как я переопределяю, равняется оператору == для Интерфейса в C#?

Это зависит, но типичное представление имеет что major.minor.release.build.

, Где:

  • главный версия главной версии Вашего программного обеспечения, думайте, что.NET 3.x
  • незначительный является незначительной версией выпуска Вашего программного обеспечения, думайте, что выпуск x.5
  • .NET является выпуском той версии, обычно bugfixes увеличит это
  • , сборка является числом, которое обозначает количество сборок, которые Вы выполнили.

Так, например, 1.9.0.1, средства, что это - версия 1.9 Вашего программного обеспечения, после 1,8 и 1.7, и т.д. где 1.7, 1.8 и 1.9 все в некотором роде обычно добавляют небольшие количества новых возможностей вместе с bugfixes. Так как это - x.x.0.x, это - первоначальная версия 1,9, и это - первая сборка той версии.

можно также найти хорошую информацию о статья Wikipedia о предмете .

17
задан David Basarab 10 December 2009 в 14:50
поделиться

2 ответа

Оператор == является статическим. Вы не можете определить статические методы для интерфейсов в C #. Кроме того, для всех операторов по крайней мере один из типов аргументов должен быть того же типа, что и класс, в котором он определен, поэтому: Нет перегрузки оператора для интерфейсов: (

Вы МОЖЕТЕ использовать вместо этого абстрактный класс - и определите оператор там. Опять же, оператор НЕ может быть виртуальным (поскольку статические методы не могут быть виртуальными ...)

[Отредактировано, причину см. Комментарий.]

28
ответ дан 30 November 2019 в 12:07
поделиться

IIRC (и я могу ошибаться здесь), интерфейсы C # не t разрешить перегрузку оператора.

Но в данном случае ничего страшного. Оператор == обычно отображается на равенство ссылки. Похоже, вам нужно равенство значений, а это значит, что вы хотите заставить их переопределить функции .Equals () (и, следовательно, также .GetHashCode () ). Это можно сделать, унаследовав интерфейс от IEquatable () .

4
ответ дан 30 November 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: