개발 보안

기본 자료형

아엠그라운드 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 >("Int32nullable"이라고 읽음)에는 -2147483648에서 2147483647까지의 모든 값을 할당하거나 null 값을 할당할 수 있다. Nullable<bool>에는 true, false 또는 null을 할당할 수 있다. 숫자 및 부울 형식에 null 값을 할당할 수 있는 기능은 특히 값이 할당되지 않을 수 있는 요소를 포함하는 데이터베이스 및 기타 데이터 형식을 다룰 때 유용하다. 예를 들어 데이터베이스의 Boolean 필드는 true 또는 false 값을 저장할 수도 있고, 정의되지 않을 수도 있다.