Eu tenho dois objetos em c # e não sei se é booleano ou qualquer outro tipo. No entanto, quando eu tento comparar esses c # falha em dar a resposta certa. Eu tentei o mesmo código com o VB.NET e foi isso!
Alguém pode me dizer como corrigir isso, se houver uma solução?
C #:
object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!
VB.NET:
Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True
avocê, obtenha o boxe e crie uma caixa contendo true. Quando você atribui a bvocê, obtém outra caixa contendo também true. Ao comparar ae b, como os dois são do tipo tempo de compilação object, você chama a sobrecarga operator ==(object, object)definida pela Especificação de idioma do C #. Essa sobrecarga verifica se as referências vão para o mesmo objeto. Como você tem duas caixas, o resultado é falsee a instrução "under" ifnão será executada. Para entender isso melhor, tente alterar a atribuição bpara: object b = a;Agora você tem apenas uma caixa.
a.Equals(b)?