Section 5.1: C# 에서의 동일성 (equally) 종류와 동일 연산자
C# 에서는, 동일함을 판별하는 두가지 종류가 있다: reference 동일성과 값 (value) 동일성이 바로 그것이다. 값 동일성이 흔히 이해하는 동일함에 가깝다: 이는 두개의 객체 (object) 가 같은 값을 가지고 있음을 의미한다. 예를 들어, 2 라는 값을 갖고있는 두개의 integer 는 값 동일성을 갖고있다. Reference 동일성은 비교를 수행해야하는 객체가 두개나 존재하지 않음을 의미한다. 대신, 하나의 객체를 가리키는 두개의 객체 참조 (object reference) 가 존재할 뿐이다.
object a = new object();
object b = a; System.Object.ReferenceEquals(a, b); // true 를 반환한다
미리 정의된 값 타입 (predefinened value types) 에 대해서는, 피연산자들의 값이 동일할 때 동일 연산자 (==
) 가 true 를 반환하며, 그렇지 않을 때 false 를 반환한다. string 을 제외한 reference 타입에 대해서는, ==
는 두 피연산자가 같은 객체를 참조하고 있을 때 true 를 반환한다. string 타입에 대해서는, ==
는 두 문자열의 값을 비교하게 된다.
// 수 (numeric) 동일성 : True
Console.WriteLine((2 + 2) == 4);
// Reference 동일성 : 동일한 값이 boxing 된
// 다른 object 들: False.
object s = 1;
object t = 1;
Console.WriteLine(s == t);
// 문자열을 몇 개 정의한다:
string a = "hello";
string b = String.Copy(a);
string c = "hello";
// 상수 (constant) 와 instance 의 문자열 값 비교 : True
Console.WriteLine(a == b);
// 문자열 reference 비교
// a 는 상수이나 b 는 instance 이다: False.
Console.WriteLine((object)a == (object)b);
// 문자열 reference 비교
// 두 상수가 모두 같은 값을 가지고 있으므로,
// 문자열 인턴 지정 (interning) 은 같은 reference 를 가리킨다 : True.
Console.WriteLine((object)a == (object)c);
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
6.2: Equals 의 기본 동작 (0) | 2020.11.23 |
---|---|
6.1: 바람직한 GetHashCode 재정의하기 (0) | 2020.11.20 |
4.3: If-Else If-Else 문 (0) | 2020.11.17 |
4.2: If 문의 조건식 (0) | 2020.11.17 |
4.1: If-Else 문 (0) | 2020.11.16 |