Я пытаюсь сравнить две структуры с использованием equals (==) в С#. Моя структура ниже:
public struct CisSettings : IEquatable<CisSettings>
{
public int Gain { get; private set; }
public int Offset { get; private set; }
public int Bright { get; private set; }
public int Contrast { get; private set; }
public CisSettings(int gain, int offset, int bright, int contrast) : this()
{
Gain = gain;
Offset = offset;
Bright = bright;
Contrast = contrast;
}
public bool Equals(CisSettings other)
{
return Equals(other, this);
}
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
var objectToCompareWith = (CisSettings) obj;
return objectToCompareWith.Bright == Bright && objectToCompareWith.Contrast == Contrast &&
objectToCompareWith.Gain == Gain && objectToCompareWith.Offset == Offset;
}
public override int GetHashCode()
{
var calculation = Gain + Offset + Bright + Contrast;
return calculation.GetHashCode();
}
}
Я пытаюсь создать struct как свойство в своем классе и хочу проверить, равна ли структура равному значению, которое я пытаюсь назначить, прежде чем идти дальше и делать это, поэтому я не указав, что свойство изменилось, когда оно отсутствует, например:
public CisSettings TopCisSettings
{
get { return _topCisSettings; }
set
{
if (_topCisSettings == value)
{
return;
}
_topCisSettings = value;
OnPropertyChanged("TopCisSettings");
}
}
Однако в строке, где я проверяю равенство, я получаю эту ошибку:
Оператор '==' не может применяться к операндам типа 'CisSettings' и 'CisSettings'
Я не могу понять, почему это происходит, может ли кто-нибудь указать мне в правильном направлении?