C #에 두 개의 개체가 있으며 부울인지 또는 다른 유형인지 알 수 없습니다. 그러나 C #을 비교하려고하면 올바른 대답을하지 못합니다. VB.NET과 동일한 코드를 사용해 보았습니다.
해결책이 있다면 누구 든지이 문제를 해결하는 방법을 말해 줄 수 있습니까?
씨#:
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
a
권투를하고 포함하는 상자를 만듭니다 true
. 당신에게 할당 할 때 당신 은 또한 다른 상자 b
를 얻을 . 당신은 비교 할 때 와 모두 컴파일시 타입이기 때문에, 당신은 과부하 전화 는 C # 언어 사양에 의해 정의합니다. 이 오버로드는 참조가 동일한 객체로 이동하는지 확인합니다. 당신이 가지고 있기 때문에 두 개의 상자를, 결과는 , 당신 "에서"문 의지하지 실행합니다. 이것을 더 잘 이해하려면 다음과 같이 할당을 변경하십시오 . 이제 상자가 하나뿐입니다. true
a
b
object
operator ==(object, object)
false
if
b
object b = a;
a.Equals(b)
어떻게됩니까?