3. 데이터의 값형식과 참조형식
C#/과제 2019. 3. 25. 00:04C#의 데이터 형식은 값형식과 참조형식으로 나눌 수 있다.
이 두가지 형식의 차이점은 Value로 볼 수 있다.
또한 모든 값 형식은 System.ValueType에서 암시적으로 파생된다.
이처럼 우리가 사용하는 int, char, double 등의 값형식의 데이터타입들은 모두 System속에서 파생된 것이란걸 알 수 있다.
값 형식은 기본적으로 NULL일 수 없으나 nullable 형식의 변수는 NULL일 수 있다.
이 말인 즉슨 값형식의 데이터타입은 모두 기본적으로 초기화를 해야만 사용할 수 있다는 뜻이다.
기본 생성자가 존재하며, 생성자 또는 리터럴을 통하여 초기화 할 수 있다.
예시를 들어 확인해보자.
<값 형식>
위의 예시와 같이 기본적으로 초기화를 해주지 않으면 사용할 수 없다.
<참조 형식>
값형식은 Stack에 존재하고, 데이터 그 자체를 Stack안에 존재하는 값형식의 변수가 복사하여 가지고 있다.
이와 다르게 참조형식은 변수가 Stack에 존재하지만, 가지고 있는 값은 Heap에 존재하는 객체의 주소를 가지고 있다.
즉, 값형식은 다른 변수가 개입을 할 수 없게 개인의 값을 가지고 있는 것이고,
참조형식은 Heap에 존재하는 데이터의 주소를 가지고 있으므로 다른 변수가 개입하여 그 주소의 값을 변경할 수 있다.
참조 : Microsoft Docs
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/value-types (값 형식)
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/reference-types (참조 형식)
youtube - .NET Stack and Heap (Wallace Kelly)
https://www.youtube.com/watch?v=clOUdVDDzIM
'C# > 과제' 카테고리의 다른 글
6. using (0) | 2019.03.26 |
---|---|
5. Stack과 Heap (0) | 2019.03.25 |
4. 문자열 표현식 (0) | 2019.03.25 |
2. 몬스터 공격 예제[3단계] (0) | 2019.03.24 |
1. For문의 구성과 흐름 (0) | 2019.03.24 |