Мне интересно, как вы могли бы сравнить два вложенных в квадрат целого числа (либо они могут быть подписаны, либо без знака) друг для друга для равенства.
Например, посмотрите на этот сценарий:
// case #1
object int1 = (int)50505;
object int2 = (int)50505;
bool success12 = int1.Equals(int2); // this is true. (pass)
// case #2
int int3 = (int)50505;
ushort int4 = (ushort)50505;
bool success34 = int3.Equals(int4); // this is also true. (pass)
// case #3
object int5 = (int)50505;
object int6 = (ushort)50505;
bool success56 = int5.Equals(int6); // this is false. (fail)
Я нахожусь в тупике о том, как надежно сопоставлять типы в виде квадратов в таком виде. Я не буду знать, что они представляют до времени выполнения, и я не могу просто отбросить их обоих на long
, потому что можно было бы ulong
. Я также не могу просто преобразовать их в ulong
, потому что это может быть отрицательным.
Лучшая идея, которую я мог бы придумать, - просто пропустить пробную версию, пока я не смогу найти общий тип или не могу исключить, что они не равны, что не является идеальным решением.