Я новичок в C #, и у меня есть опыт работы на C ++.
Я определил структуру, и компилятор (Microsoft) продолжает выявлять ошибку CA1815 «'GenericSendRequest' должен переопределить Equals»
Я немного прочитал и увидел, что структуры C # являются производными от ValueType, который реализует общий Equals используя отражение.Это еще больше сбило меня с толку:
Так как я могу сказать компилятору, что «мне все равно»? Нечто подобное просто с объявлением оператора присваивания в классе C ++ без предоставления определения, подтверждающего, что я знаю, что делаю.
До сих пор мое решение заключалось в том, чтобы включить:
public static bool operator ==(GenericSendRequest lhs, GenericSendRequest rhs)
{
return lhs.Equals(rhs);
}
public static bool operator !=(GenericSendRequest lhs, GenericSendRequest rhs)
{
return !lhs.Equals(rhs);
}
public override bool Equals(object obj)
{
return base.Equals(obj);
}
//Yes, it also makes me override GetHashCode since I'm overriding Equals.
public override int GetHashCode()
{
return base.GetHashCode();
}
в мою структуру, что просто ужасно.
Изменить: Это определение структуры:
public struct GenericSendRequest
{
public LiveUser Sender;
public LiveUser[] Receivers;
public Message Msg;
public ServiceHttpRequest HttpRequest;
}
Его использование - это просто несколько возвращаемых значений из функции:
public static GenericSendRequest CreateGenericSendRequest(...);