이 기사 소개:
Equals, ==, C# ReferenceEquals는 두 개체의 개체가 동일한지 여부를 확인하는 데 사용할 수 있습니다. 동일한 기본 값 유형에 대해 ReferenceEquals()는 두 개체의 참조가 동일한지 확인하므로 == 및 Equals()의 비교 결과는 동일합니다. 값 유형의 경우 각 판단 전에 박싱 작업을 수행해야 하기 때문에, 즉 매번 임시 개체가 생성되므로 항상 false가 반환됩니다.
1. == 연산자
1. 기존 !=에 해당하는 정적 동등 기호입니다. 이 기호는 두 개체가 같음을 비교하는 데 사용할 수 있습니다.
2. 필요에 따라 자동으로 필요한 유형 변환을 수행하고 두 개체의 값이 같은지 여부에 따라 true 또는 false를 반환합니다.
3. 참조 객체의 경우 해당 참조를 비교합니다(문자열 참조 유형을 제외하고 문자열은 비교 값입니다).
4 값 유형의 경우 해당 값을 비교합니다.
5. 일부 내장 참조 유형은 == 기호를 오버로드합니다. 예를 들어 문자열은 ==를 오버로드하므로 비교 대상은 두 문자열의 참조가 아니라 두 문자열 리터럴이 동일한지 여부입니다.
6. 예:
int i = 5; int j = 5; Console.WriteLine(i == j);//值类型比较代数值 输出True int m = 6; double n = 6.0; Console.WriteLine(m == n);//类型自动转换并比较数值 输出True object obj1 = new object(); object obj2 = new object(); Console.WriteLine(obj2==obj1);//引用类型比较引用 输出False
2. 같음
1. 두 개체의 참조가 동일한지 비교합니다.
2. 단, 값 유형의 경우 유형이 동일하고(자동 유형 변환이 수행되지 않음) 값이 동일할 경우(구조체의 각 멤버에 대해 동일해야 함) ), Equals가 반환됩니다.
true, 그렇지 않으면 false를 반환합니다.
3. 참조 유형의 경우 기본 동작은 ReferenceEquals와 동일합니다. 두 객체가 동일한 참조를 가리키는 경우에만 True가 반환됩니다.
4. 필요에 따라 Equals를 오버로드할 수 있습니다.
5. 예시
int i = 5; int j = 5; Console.WriteLine(i.Equals(j));//值类型比较 输出True int m = 6; double n = 6.0; Console.WriteLine(m.Equals(n));//类型不会自动转换并比较数值 输出False object obj1 = new object(); object obj2 = new object(); Console.WriteLine(obj2.Equals(obj1));//引用类型比较 输出False Console.WriteLine(obj2.Equals(string.Empty));//输出False,比较量对象的类型不同直接返回False
int i = 5; int j = 5; Console.WriteLine(object.ReferenceEquals(i, j));//输出False int m = 6; double n = 6.0; Console.WriteLine(object.ReferenceEquals(m, n));//输出False object obj1 = new object(); object obj2 = new object(); Console.WriteLine(object.ReferenceEquals(obj1, obj2));//输出False