일반적으로 C#의 모든 유형은 값 유형의 두 가지 주요 범주로 나눌 수 있습니다. 및 참조 유형 . 각 유형에 대해 자세히 살펴보겠습니다.
값 유형
값 유형의 변수에는 해당 데이터가 직접 포함됩니다. 각 변수에는 자체 데이터 복사본이 있습니다. 따라서 값 유형의 변수가 다른 개체를 수정하는 것은 불가능합니다.
값 유형은 다음 유형 중 하나일 수 있습니다. -
- 모든 숫자 유형(예:int, float,) 및 더블
- 문자 및 bool 유형
- 구조체 입력하거나
- 열거 타자.
값 유형 단순에는 값이 포함됩니다. 예를 들어, 정수 유형은 참조 유형과 같이 숫자에 대한 포인터가 아니라 실제 숫자를 포함합니다.
사용자 정의 값 유형을 생성하기 위해 구조체를 사용할 수 있습니다. 예를 들어 -
public struct Point
{
public int X;
public int Y;
}
var p1 = new Point(); 메모리에서 Point의 인스턴스는 다음과 같이 표현됩니다 -

값 유형의 변수를 다른 변수에 할당할 때 할당 작업은 할당되는 값의 복사본을 만듭니다. 예를 들어,
Point p2 = p1;

참조 유형
참조 유형의 변수는 해당 개체에 대한 참조를 저장합니다. 두 개의 다른 변수가 동일한 객체에 대한 참조를 보유하는 것이 가능합니다. 한 변수가 개체에 적용한 모든 변경 사항은 두 번째 변수에 표시됩니다.
참조 유형은 다음 유형으로 구성됩니다. -
- 문자열
- 수업
- 배열
- 대리인
- 인터페이스
예를 들어 다음과 같이 참조 유형인 클래스를 생성할 수 있습니다. -
public class Point{
public int X;
public int Y;
}
var p1 = new Point();

참조 유형의 변수를 다른 변수에 할당할 때 할당 작업은 실제 개체가 아닌 참조만 복사합니다.
Point p2 = p1;

예
using System;
class Program{
static void Main(){
var p1 = new Point { X = 10 };
Point p2 = p1;
p2.X = 20;
Console.WriteLine("Value Type");
Console.WriteLine(p1.X);
Console.WriteLine(p2.X);
var u1 = new User { Age = 10 };
User u2 = u1;
u2.Age = 20;
Console.WriteLine("Reference Type");
Console.WriteLine(u1.Age);
Console.WriteLine(u2.Age);
}
}
public struct Point{
public int X;
public int Y;
}
public class User{
public int Age { get; set; }
} 출력
Value Type 10 20 Reference Type 20 20