Переопределение Равняется методу в Структурах

Я искал переопределяющие инструкции для структур, но все, что я могу найти, для классов.

Сначала я думал, что не должен буду проверять, чтобы видеть, был ли переданный объект несуществующим, как структуры являются типами значения и не могут быть пустыми. Но теперь, когда я задумываюсь о нем, как равняется подписи,

public bool Equals(object obj)

кажется, что нет ничего предотвращающего пользователя моей структуры, чтобы попытаться сравнить его с произвольным ссылочным типом.

Мое второе замечание касается кастинга I (думайте I), должны сделать, прежде чем я сравню свои частные поля в моей структуре. Как я, как предполагается, бросаю объект к типу своей структуры? C# as ключевое слово кажется только подходящим для ссылочных типов.

56
задан Mark Amery 8 May 2017 в 13:07
поделиться

3 ответа

struct MyStruct 
{
   public override bool Equals(object obj) 
   {
       if (!(obj is MyStruct))
          return false;

       MyStruct mys = (MyStruct) obj;
       // compare elements here

   }

}
75
ответ дан 26 November 2019 в 17:18
поделиться

Добавление к существующим ответам.

Если вы добавите? после имени структуры (это работает для каждого объекта значения)

int?

Приведение также выполняется путем вызова (MyStructName) variableName

0
ответ дан 26 November 2019 в 17:18
поделиться

Используйте оператор is :

public bool Equals(object obj)
{
  if (obj is MyStruct)
  {
    var o = (MyStruct)obj;
    ...
  }
}
5
ответ дан 26 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

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