Я запускал FxCop над своим кодом, и он сообщает о нескольких ошибках CA2224 и CA1815 из-за структур, обладающих функциями Operator =
, но без переопределения для .Equals
. Будучи послушным человеком, я пытаюсь исправить это, но столкнулся с проблемой. Я создал структуру таким образом: -Невозможно переопределить .Equals в структуре
Public Structure MyStruct
Public my_innards As Integer
Public Shared Operator =(ByVal fs As MyStruct, ByVal ss As MyStruct) As Boolean
Return fs.my_innards = ss.my_innards
End Operator
Public Shared Operator <>(ByVal fs As MyStruct, ByVal ss As MyStruct) As Boolean
Return fs.my_innards <> ss.my_innards
End Operator
End Structure
и попытке переопределить оператор .Equals
следующим образом: -
Public Overrides Function Equals(ByVal ss As MyStruct) As Boolean
Return Me.my_innards = ss.my_innards
End Function
Это дает ошибку компиляции function 'Equals' cannot be declared 'Overrides' because it does not override a function in a base structure
Но когда я пытаюсь: -
Public Function Equals (ByVal ss As MyStruct) As Boolean
Return Me.my_innards = ss.my_innards
End Function
это вызывает предупреждение function 'Equals' shadows an overridable method in the base class 'ValueType'. To override the base method, this method must be declared 'Overrides'
.
Другими словами, я должен и не могу объявить метод как overrides
. Может ли кто-нибудь помочь мне с этим?
Попытайтесь использовать «Открытый принцип переопределения функций (ByVal ss as Object) As Boolean' - аргументом этой функции стал« Object » – MarcinJuraszek
Не' ss' типа 'Object' (' object' в C#), ? –
@MarcinJuraszek, правыйo. Это исправлено, спасибо. Кажется довольно странным, однако, что вы можете лопать любую старую вещь в эту функцию. –