개발 보안
기본 자료형
아엠그라운드
2022. 4. 1. 05:00
자료형
값형과 참조형
C#에서 데이터 타입은 값(value type)과 참조형 (reference type)으로 나뉜다. 그 차이점을 요약하면 아래의 표와 같다.
값형 | 참조형 |
값형 변수는 값 자체를 보관한다 | 참조형 변수는 데이터에 대한 참조를 보관한다. 데이터 자체는 별도의 영역 (힙)에 저장된다. |
스택에 할당된다. | 참조는 스택에 할당되고 실제 데이터는 힙에 할당된다. |
값형 변수 하나를 다른 변수에 대입하면 변수에 포함된 값이 복사된다. | 참조형 변수 하나를 다른 변수에 대입하면 개체 자체가 아니라 개체에 대한 참조가 복사된다. |
인수 전달 시 call-by-value 형식으로 전달된다. | 인수 전달 시 call-by-reference 형식으로 전달된다. |
단순형 (숫자형 + 불린형), 구조체형, 열거형 | string, object, classes, interface, delegate |
이외에도 값형은 참조형과는 달리 값형에서 새 형을 파생시킬 수 없다. 그러나 구조체는 참조형과 마찬가지로 인터페이스를 구현할 수 있다. 또한, 참조형과 달리 값형에는 null 값이 포함될 수 없습니다. 그러나 nullable 형식 기능을 사용하면 값형을 null에 대입할 수 있습니다. nullable 형식은 System.Nullable 구조체의 인스턴스로서 내부 값 형식의 일반적인 값 범위에 추가로 null 값을 나타낼 수 있다. 예를 들어 Nullable<Int32 >("Int32의 nullable"이라고 읽음)에는 -2147483648에서 2147483647까지의 모든 값을 할당하거나 null 값을 할당할 수 있다. Nullable<bool>에는 true, false 또는 null을 할당할 수 있다. 숫자 및 부울 형식에 null 값을 할당할 수 있는 기능은 특히 값이 할당되지 않을 수 있는 요소를 포함하는 데이터베이스 및 기타 데이터 형식을 다룰 때 유용하다. 예를 들어 데이터베이스의 Boolean 필드는 true 또는 false 값을 저장할 수도 있고, 정의되지 않을 수도 있다.