본문 바로가기
개발/기타

[개발 상식] 값 타입(Value Type)과 참조 타입(Refrence Type)

by MNMNMNMN 2023. 11. 8.
728x90

값 타입(Value Type)과 참조 타입(Refrence Type)

값 타입(Value Type)

  1. 값 타입은 데이터를 스택 메모리에 저장합니다.
  2. 값 타입은 변수가 값을 직접 포함하며, 메모리 상에서 독립된 복사본을 가집니다.
  3. 값 타입은 주로 기본 데이터 유형(예: 정수, 부울, 문자, 실수 등) 또는 사용자 정의 구조체(struct)로 나타납니다.

값 타입의 예:

int x = 10; // 정수 (값 타입)
char letter = 'A'; // 문자 (값 타입)
DateTime date = DateTime.Now; // 날짜 및 시간 구조체 (값 타입)

참조 타입(Reference Type)

  1. 참조 타입은 데이터를 힙(heap) 메모리에 저장합니다. 변수는 힙 메모리에 있는 데이터를 가리키는 참조를 포함합니다.
  2. 참조 타입은 객체 인스턴스 또는 클래스로 나타납니다. 이들은 힙 메모리에서 생성되며, 여러 변수가 동일한 객체를 참조할 수 있습니다.

참조 타입의 예:

string name = "Alice"; // 문자열 (참조 타입)
List<int> numbers = new List<int> { 1, 2, 3 }; // 리스트 (참조 타입)
Person person = new Person("Bob", 30); // 사용자 정의 클래스 (참조 타입)

참조 타입의 변수는 데이터에 대한 포인터(참조)를 가지며, 여러 변수가 동일한 데이터를 참조할 수 있습니다. 값 타입은 복사본을 가지고 있으므로 하나의 변수를 변경해도 다른 변수에는 영향을 미치지 않습니다. 참조 타입은 데이터를 공유하므로 한 변수의 변경이 다른 변수에도 영향을 미칠 수 있습니다.

참조 타입은 객체 그래프를 생성하고 복잡한 데이터 구조를 나타내는 데 유용하며, 값 타입은 간단한 데이터를 저장하는 데 유용합니다. C#에서는 값 타입과 참조 타입을 구분하여 사용자가 프로그램을 더 효과적으로 디자인할 수 있도록 지원합니다.

728x90
반응형

댓글