C# operator ==
C# operator ==
как он пишется надеюсь все помнят - public static Boolean operator ==(TObject a, TObject b) { ... }
Но меня интересует не этот вариант а чутк другой:
public static Boolean operator ==(TFirst a, TSecond b) { ... }
Т.е. вариант, когда сравниваются разнотипные объекты.
Написать сам компаратор разнотипных объектов - проблемы не представляет.
Вопрос возникает позднее, кода в коде имеется
TFirst a = new TFirst();
TSecond b = new TSecond();
if(a == b) { ... } // ok
if(b == a) { ... } // error
Операция ==, в общем-то, коммутативная, от положения операндов зависеть не должна.
Но Шарп "не понимает" коммутативность и потому придется писать парную свапнутую
операцию.
Как решаете подобные вопросы?
Пишете в том же классе или переносите в первый в операторе==?