같음 및 == 참조 평등을 확인하십시오. 하지만 왜 다르게 작동합니까? 여기같음 vs ==는 다르게 동작합니다.
Console.WriteLine(c == d); //False
Console.WriteLine(c.Equals(d)); //True
Console.WriteLine(cc == dd); //True
Console.WriteLine(cc.Equals(dd));//True
누군가 현장에서 일어나는 일을 설명 할 수 있습니까?
//https://blogs.msdn.microsoft.com/csharpfaq/2004/03/29/when-should-i-use-and-when-should-i-use-equals/
public void StringDoubleEqualsVsEquals()
{
// Create two equal but distinct strings
string a = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });
string b = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });
Console.WriteLine(a == b); //True
Console.WriteLine(a.Equals(b)); //True
// Now let's see what happens with the same tests but with variables of type object
object c = a;
object d = b;
Console.WriteLine(c == d); //False
Console.WriteLine(c.Equals(d)); //True
/*************************************************************************/
Console.WriteLine(Environment.NewLine);
string aa = "1";
string bb = "1";
Console.WriteLine(aa == bb);//True
Console.WriteLine(aa.Equals(bb));//True
object cc = aa;
object dd = bb;
Console.WriteLine(cc.GetType());//System.String
Console.WriteLine(dd.GetType());//System.String
Console.WriteLine(cc == dd);//True
Console.WriteLine(cc.Equals(dd));//True
Console.ReadKey();
}
문자열'=='연산자가 값을 확인하고 참조가 아니라는 것을 확인합니다 https://msdn.microsoft.com/en-us/library/362314fe.aspx –
'Equals'도'=='도 참조 용으로 테스트 할 수 없습니다 평등. – Lee
문자열에 대한 ['=='은 값 비교를 수행하며 참조 비교는 수행하지 않습니다.] (https://msdn.microsoft.com/en-us/library/system.string.op_equality (v = vs.110) .aspx) –