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

+ Recent posts