값 타입과 참조 타입 비교

값 타입과 참조 타입은 사실 학부 수업에서 sub-program을 배울 때, 배웠던 내용이다. 정확히 말하면, 학교에서 변수 바인딩과 참조 바인딩으로 프로그래밍 언어 수업시간에 배웠었다.

둘의 결정 적인 차이는 데이터를 복사하느냐 하지 않고 참조하느냐의 차이이다.

아래는 값 타입과 참조 타입을 보기 쉽게 비교한 테이블과 그래프이다.

값 타입 참조 타입
System.ValueType 에서 상속 System.Object에서 상속
복사 전달 참조 전달
할당 시, 값이 복사 할당 시, 참조(주소값)가 복사
Sealed  
stack 영역에 저장 heap 영역에 저장
Int, Double, DateTime, Bool … Structs Object, String, List, Array ... **Classes**

image-20220705202135971

[그림 출처: C#/.NET - 50 Essential Interview Questions (Junior Level) > section 4 중]

값 타입과 참조 타입 예시

  1. 값 타입-C#코드
using System;

namespace _2022_06_28
{
	internal class Class1
	{
		static void Main(string[] args)
		{
			var num1 = 55;
			var num2 = num1;

			num1++;

			Console.WriteLine(num1); // 56
			Console.WriteLine(num2); // 55
		}
	}
}

  1. 참조 타입-C#코드
using System;

namespace _2022_06_28
{
	internal class Class1
	{
		static void Main(string[] args)
		{
			var num1 = new int[] { 1 };
			var num2 = num1;

			num1[0] = 99;

			Console.WriteLine(num1[0]); // 99
			Console.WriteLine(num2[0]); // 99
		}
	}
}

태그: ,

카테고리:

업데이트:

댓글남기기