C# 변수

Shy·2025년 3월 9일

C#

목록 보기
5/27

C#의 데이터 타입 개요

출처

C#에서는 데이터 타입을 크게 두 가지로 나눌 수 있다.

  1. 값 타입(Value Types)
  2. 참조 타입(Reference Types)

이 두 가지 타입은 메모리에 저장되는 방식과 동작 방식에서 차이가 있다.

1. 값 타입(Value Types)

  • 메모리의 스택(Stack)에 저장된다.
  • 변수에 실제 값 자체를 저장한다.
  • 한 변수를 다른 변수에 할당하면 값이 복사된다.
  • 기본 데이터 타입과 구조체(struct), 열거형(enum)이 이에 해당된다.

주요 값 타입은 다음과 같다.

2. 참조 타입(Reference Types)

  • 메모리의 힙(Heap)에 저장된다.
  • 변수에 데이터의 참조(메모리 주소)를 저장한다.
  • 한 변수를 다른 변수에 할당하면 참조가 복사돼서 같은 객체를 가르킨다.
  • 클래스(class), 배열(array), 인터페이스(interface), 델리게이트(delegate) 등이 이에 해당된다.
string a = "Hello";
string b = a;
b = "World";
Console.WriteLine(a); // 출력: "Hello"
Console.WriteLine(b); // 출력: "World"

위 예제에서 ab는 같은 문자열을 가리키지만, 문자열은 불변(immutable) 이기 때문에 b에 새로운 값을 할당하면 새로운 메모리 공간이 생성돼. 따라서 ab는 서로 다른 문자열을 가리키게 된다.


정리

구분값 타입(Value Types)참조 타입 (Reference Types)
저장 위치스택(Stack)힙(Heap)
저장 방식변수에 실제 값이 저장된다.변수에 메모리 주소(참조값)가 저장된다.
값 할당 방식값을 복사(독립적)참조를 복사(같은 객체를 가르킨다.
변수 간 독립성복사된 값은 독립적으로 변경 가능복사된 참조는 원본과 연결되어 있다.
대표적인 예시int, float, double, bool, char, struct, enumstring, object, class, array, interface, delegate
기본데이터 타입 예시int, float, double, bool, charstring, object
사용자 정의 타입struct, enumclass, interface, delegate
값 변경 시 동작값이 변경되면 새로운 값이 저장된다.값이 변경되면 원본 객체가 수정된다.
메모리 관리스택에서 빠르게 할당 및 해제가비지 컬렉션(GC)에 의해 관리된다.

profile
신입사원...

0개의 댓글