Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#의 값 유형 및 참조 유형 설명 및 대조

<시간/>

일반적으로 C#의 모든 유형은 값 유형의 두 가지 주요 범주로 나눌 수 있습니다. 및 참조 유형 . 각 유형에 대해 자세히 살펴보겠습니다.

값 유형

값 유형의 변수에는 해당 데이터가 직접 포함됩니다. 각 변수에는 자체 데이터 복사본이 있습니다. 따라서 값 유형의 변수가 다른 개체를 수정하는 것은 불가능합니다.

값 유형은 다음 유형 중 하나일 수 있습니다. -

  • 모든 숫자 유형(예:int, float,) 및 더블
  • 문자bool 유형
  • 구조체 입력하거나
  • 열거 타자.

값 유형 단순에는 값이 포함됩니다. 예를 들어, 정수 유형은 참조 유형과 같이 숫자에 대한 포인터가 아니라 실제 숫자를 포함합니다.

사용자 정의 값 유형을 생성하기 위해 구조체를 사용할 수 있습니다. 예를 들어 -

public struct Point
{
public int X;
public int Y;
}
var p1 = new Point();

메모리에서 Point의 인스턴스는 다음과 같이 표현됩니다 -

C#의 값 유형 및 참조 유형 설명 및 대조

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

Point p2 = p1;

C#의 값 유형 및 참조 유형 설명 및 대조

참조 유형

참조 유형의 변수는 해당 개체에 대한 참조를 저장합니다. 두 개의 다른 변수가 동일한 객체에 대한 참조를 보유하는 것이 가능합니다. 한 변수가 개체에 적용한 모든 변경 사항은 두 번째 변수에 표시됩니다.

참조 유형은 다음 유형으로 구성됩니다. -

  • 문자열
  • 수업
  • 배열
  • 대리인
  • 인터페이스

예를 들어 다음과 같이 참조 유형인 클래스를 생성할 수 있습니다. -

public class Point{
   public int X;
   public int Y;
}
var p1 = new Point();

C#의 값 유형 및 참조 유형 설명 및 대조

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

Point p2 = p1;

C#의 값 유형 및 참조 유형 설명 및 대조

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