There is a good article on MSDN on when to use == and when to use Equals.
В основном есть 2 типа равенства: равенство ссылок и равенство значений. Если у 2 объектов есть ссылочное равенство, то поэтому они также имеют равенство значений (обе ссылки указывают на один и тот же объект, поэтому, конечно, их значения одинаковы).
Противоположность (и в вашем случае) не всегда истинна. Если 2 объекта имеют равенство значений, они не обязательно имеют ссылочное равенство. В вашем случае ==
действует как ссылочное равенство.
Обычно то, что вы хотите Equals
, это виртуальный метод, определенный в System.Object.
То, что вы обычно не хотите для ссылочных типов, это ==
, оно обычно сравнивает, ссылаются ли на две ссылки на один и тот же объект.
В вашем случае A
и B
зажаты в 2-х различных объектов. A
относится к первому, а B
относится ко второму. ==
проверяет и видит, что оба являются referring
для разных вещей.
Будет ли Enum сравнения бросков Exception? если да, то каково было бы его решение? –