3. 데이터의 값형식과 참조형식

C#/과제 2019. 3. 25. 00:04

C#의 데이터 형식은 값형식과 참조형식으로 나눌 수 있다.

이 두가지 형식의 차이점은 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
: