공통형 시스템

Common Type System

Microsoft 의 경우.NET Framework, Common Type System(CTS; 공통 유형 시스템)은 컴퓨터 메모리에 유형 정의 및 유형의 특정 값을 표시하는 방법을 지정하는 표준입니다.다른 프로그래밍 언어로 작성된 프로그램이 정보를 쉽게 공유할 수 있도록 하기 위한 것입니다.프로그래밍 언어에서 사용되는 것처럼 유형은 값 집합의 정의(예: "0과 10 사이의 모든 정수")와 이러한 값에 허용되는 연산(예: 더하기 및 빼기)으로 설명할 수 있습니다.

CTS의 사양은 Ecma 표준 335 "Common Language Infrastructure (CLI) Partitions I to VI"에 기재되어 있습니다.CLI 및 CTS는 Microsoft Microsoft에 의해 작성되었습니다.NET 프레임워크는 표준의 구현이다.

공통형 시스템의 기능

  • 언어 간 통합, 유형 안전 및 고성능 코드 실행을 지원하는 프레임워크를 구축합니다.
  • 많은 프로그래밍 언어의 완전한 구현을 지원하는 객체 지향 모델을 제공합니다.
  • 언어가 따라야 하는 규칙을 정의하여 서로 다른 언어로 작성된 개체가 상호 작용할 수 있도록 합니다.
  • 또한 CTS는 다양한 언어로 기술된 객체의 데이터 유형이 서로 상호 작용할 수 있도록 하는 규칙을 정의합니다.
  • 또한 유형 가시성 및 유형 멤버에 대한 접근에 대한 규칙도 지정합니다.즉, CTS는 어셈블리가 유형의 범위를 형성하는 규칙을 확립하고 공통 언어 런타임에 의해 가시성 규칙을 적용합니다.
  • CTS는 타입 상속, 가상 메서드 및 오브젝트의 라이프 타임을 관리하는 규칙을 정의합니다.
  • 에서 지원되는 언어NET은 모든 데이터 유형 또는 일부 공통 데이터 유형을 구현할 수 있습니다.

소수점 값을 반올림할 때 프레임워크 전체에서 기본적으로 반올림("은행") 방법이 사용됩니다.버전 2 이후로는 프로그래머 [1]옵션에 따라 "대칭 산술 반올림"(0에서 반올림)도 사용할 수 있습니다.

  • 그것은 다른 언어들과 소통하기 위해 사용된다.

유형 카테고리

공통 유형 시스템은 두 가지 범주의 유형을 지원합니다.

값 유형
유형에는 데이터가 직접 포함되며 값 유형의 인스턴스는 스택에 할당되거나 구조체에 인라인으로 할당됩니다.값 유형은 기본 제공(런타임에 의해 구현됨), 사용자 정의 또는 열거를 사용할 수 있습니다.
참조 유형
참조 유형은 값의 메모리 주소에 대한 참조를 저장하고 에 할당됩니다.참조 유형은 자기 설명 유형, 포인터 유형 또는 인터페이스 유형일 수 있습니다.참조 유형의 유형은 자체 설명 유형의 값에서 확인할 수 있습니다.자기 설명 유형은 어레이와 클래스 유형으로 더 세분화됩니다.클래스 유형은 사용자 정의 클래스, 상자형 값 유형 및 위임입니다.

다음 예시는 Visual Basic에 기재되어 있습니다.NET은 참조 유형과 값 유형의 차이를 보여 줍니다.

Imports(가져오기) 시스템.  학급 클래스 1     일반의 가치 ~하듯이 정수 = 0 끝. 학급 '클래스 1'   학급 시험     공유했습니다. 후보선수 주된()         어둡다 밸브 1 ~하듯이 정수 = 0         어둡다 밸브2 ~하듯이 정수 = 밸브 1         밸브2 = 123         어둡다 참조 1 ~하듯이 신규 클래스 1()         어둡다 참조 2 ~하듯이 클래스 1 = 참조 1         참조 2.가치 = 123         콘솔.기입선("값: {0}, {1}", 밸브 1, 밸브2)         콘솔.기입선("참조: {0}, {1}", 참조 1.가치, 참조 2.가치)     끝. 후보선수 '메인 끝. 학급 '테스트' 

상기 예의 출력은

값: 0, 123 참조: 123, 123

복싱과 언박싱

복싱

값 유형을 참조 유형으로 변환하는 것을 상자화라고도 합니다.아래 예에서 볼 수 있듯이 Int32가 오브젝트에 박스화되어 있다고 컴파일러에 알릴 필요는 없습니다.이는 Int32가 그 자체를 처리하기 때문입니다.

Int32 x = 10;  물건 o = x ; // 암묵적 복싱 콘솔.기입선("개체 o = {0}",o); // "The Object o = 10" 출력 

다만, Int32 는, 항상 다음과 같이 명시적으로 박스를 붙일 수 있습니다.

Int32 x = 10;  물건 o = (물건) x; // 명시적 박싱 콘솔.기입선("개체 o = {0}",o); // "개체 o = 10" 출력 

언박싱

다음 예제에서는 참조 유형을 값 유형으로 되돌리는 방법을 보여 줍니다.먼저 Int32가 오브젝트에 박스화되어 다시 박스 해제됩니다.언박스는 명시적인 캐스팅이 필요합니다.

Int32 x = 5;  물건 o1 = x; // 암묵적 박싱 x = (인트)o1; // 명시적 언박싱 

「 」를 참조해 주세요.

레퍼런스

  1. ^ "MidpointRounding Enumeration". Microsoft Docs.

외부 링크