728x90
값 타입(Value Type)과 참조 타입(Refrence Type)
값 타입(Value Type)
- 값 타입은 데이터를 스택 메모리에 저장합니다.
- 값 타입은 변수가 값을 직접 포함하며, 메모리 상에서 독립된 복사본을 가집니다.
- 값 타입은 주로 기본 데이터 유형(예: 정수, 부울, 문자, 실수 등) 또는 사용자 정의 구조체(struct)로 나타납니다.
값 타입의 예:
int x = 10; // 정수 (값 타입)
char letter = 'A'; // 문자 (값 타입)
DateTime date = DateTime.Now; // 날짜 및 시간 구조체 (값 타입)
참조 타입(Reference Type)
- 참조 타입은 데이터를 힙(heap) 메모리에 저장합니다. 변수는 힙 메모리에 있는 데이터를 가리키는 참조를 포함합니다.
- 참조 타입은 객체 인스턴스 또는 클래스로 나타납니다. 이들은 힙 메모리에서 생성되며, 여러 변수가 동일한 객체를 참조할 수 있습니다.
참조 타입의 예:
string name = "Alice"; // 문자열 (참조 타입)
List<int> numbers = new List<int> { 1, 2, 3 }; // 리스트 (참조 타입)
Person person = new Person("Bob", 30); // 사용자 정의 클래스 (참조 타입)
참조 타입의 변수는 데이터에 대한 포인터(참조)를 가지며, 여러 변수가 동일한 데이터를 참조할 수 있습니다. 값 타입은 복사본을 가지고 있으므로 하나의 변수를 변경해도 다른 변수에는 영향을 미치지 않습니다. 참조 타입은 데이터를 공유하므로 한 변수의 변경이 다른 변수에도 영향을 미칠 수 있습니다.
참조 타입은 객체 그래프를 생성하고 복잡한 데이터 구조를 나타내는 데 유용하며, 값 타입은 간단한 데이터를 저장하는 데 유용합니다. C#에서는 값 타입과 참조 타입을 구분하여 사용자가 프로그램을 더 효과적으로 디자인할 수 있도록 지원합니다.
728x90
반응형
'개발 > 기타' 카테고리의 다른 글
[Git Hub] 100Mb 넘는 파일 올릴 때 생긴 문제 해결 방법 (1) | 2023.12.01 |
---|---|
[개발 상식]인터페이스(interface)와 추상 클래스(abstaract class) (0) | 2023.11.09 |
[개발 상식]박싱(Boxing)과 언박싱(Unboxing)에 대해 (0) | 2023.11.07 |
[개발 상식]태스크(Task)와 코루틴(Coroutine) (0) | 2023.11.06 |
[개발 상식]JSON, XML, CSV의 각 장단점 (0) | 2023.11.05 |
댓글