"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C# 권투 및 개봉 : 언제 그리고 왜 필요한가요?

C# 권투 및 개봉 : 언제 그리고 왜 필요한가요?

2025-01-29에 게시
검색:691

C# Boxing and Unboxing: When and Why Do We Need Them?

C#의 설치 및 권투 : 이유 및 응용 시나리오

소개

C#에서 로딩 및 권투는 조정 된 값과 참조 유형의 다양한 동작에 필요한 메커니즘입니다. 그러나 그들의 목적과 사용 사례는 프로그래머를 혼동 할 수 있습니다. 이 안내서는 이러한 개념이 중요한 이유를 명확히하고 실제 응용 프로그램의 예를 제공합니다.

복싱 및 권투의 중요성

incuffing and boxing을 사용하면 C#이 통합 유형 시스템

을 유지할 수 있으므로 값 유형과 참조 유형이 일관되게 상호 작용하고 처리 될 수 있습니다. 값 유형 (예 : 짧은 및 int)은 데이터를 변수에 직접 저장합니다. 대신, 참조 유형은 메모리의 다른 위치에서 기본 객체를 참조합니다.

이러한 다른 데이터 구조 사이의 원활한 상호 작용을 촉진하기 위해 박스는 포장 객체를 생성하여 값 유형 데이터를 포함하여 참조 유형처럼 처리 할 수 ​​있습니다. 이를 통해 참조 유형을 위해 설계된 데이터 구조에서 작동 유형을 쉽게 저장하고 작동 할 수 있습니다.

복싱 및 권투에 대한 응용 프로그램 시나리오

포장을위한 고전적인 사용 사례는 가 남겨두고 객체 만 허용합니다. ArrayList 예제에 표시된대로 값 유형을 저장하려면이 세트를 포장해야합니다.

짧은 s = 25; Object objshort = s; // 포장 현대

에서
short s = 25;
object objshort = s;  // 装箱
숨겨진 변환 :

패킷 처리 값 유형과 참조 유형 사이의 숨겨진 변환 : ]

double e = 2.718281828459045; int ee = (int) e;
  • 동일한 특성의 비교 : 참조 유형 기본값은 기본적으로 참조를 참조합니다. 하단 값을 비교하려면 해체 및 명시 적으로 변환해야합니다.
double e = 2.718281828459045; Object o = E; // 포장 int ee = (int) (double) o;
double e = 2.718281828459045;
int ee = (int)e;  // 从double到int的隐式转换(需要装箱)
  • 에주의를 기울여야하는 세부 정보
  • 참조는 동일 값과 동일합니다.
참조 유형은 비교와 동일한 참조를 사용하며 참조가 기본 값이 아닌 동일인지 확인합니다. 이것은 예상치 못한 결과로 이어질 수 있습니다 :
double e = 2.718281828459045;
object o = e;  // 装箱
int ee = (int)(double)o;  // 拆箱和显式转换
  • 복사 동작 : 구조 (값 유형)를 설치할 때 사본이 생성됩니다. 대신,로드 (참조 유형)시 원래 객체에 대한 참조가 생성됩니다. 이 동작 차이는 박스 설치 값의 계산 결과에 영향을 미칩니다.
[struct | 포인트 P = 새로운 점 (1, 1); 객체 o = p; p.x = 2; console.writeline (((((((((((())))))) .x); // output : 1 (구조 인 경우)/ 2 (클래스 인 경우)

]

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3