반응형

언박싱 2

오브젝트 타입에 벨류 타입을 대입하게 될 경우 어떤 현상이 발생할까?

C#에서 값 유형과 개체 유형은 근본적으로 다르며, 둘 중 하나를 다른 유형으로 대체할 수 없습니다. 값 유형은 해당 데이터를 직접 포함하는 유형이고, 객체 유형은 힙에 있는 해당 유형의 인스턴스를 가리키는 참조 유형입니다. 값 유형을 객체 유형으로 대체하거나 그 반대로 대체하려고 하면 두 유형이 호환되지 않음을 나타내는 컴파일 타임 오류가 발생합니다. 예를 들어 int 값을 객체 변수에 할당하려고 하면 int는 값 유형이고 객체는 참조 유형이므로 컴파일 타임 오류가 발생합니다. 값 유형을 객체로 사용하려면 값을 객체 참조로 래핑하여 값을 박스형으로 묶을 수 있습니다. 이렇게 하면 힙에 값의 복사본이 포함된 새 객체가 생성됩니다. 그런 다음 이 객체를 값 유형의 인스턴스인 것처럼 사용할 수 있습니다. 그..

공부/C# 2023.03.05

박싱과 언박싱이란?

C#에서 박싱과 언박싱은 각각 값 유형을 참조 유형으로 변환하고 참조 유형에서 변환하는 데 사용되는 연산입니다. 다음은 각각에 대한 간략한 설명입니다: 박싱: 박싱은 값 유형을 개체 또는 System.ValueType과 같은 참조 유형으로 변환하는 프로세스입니다. 값 유형이 박싱되면 힙에 새 객체가 생성되어 값 유형의 값을 저장합니다. 새 객체에는 값 유형에 대한 참조가 할당되고 이 참조는 박싱 작업의 결과로 반환됩니다. 원래 값 유형은 변경되지 않습니다. int i = 42; object o = i; // boxing operation 예를 들어, 위 예제에서 정수 변수 i의 값은 object 유형의 새 개체에 포함됩니다. 변수 o는 이제 이 개체에 대한 참조를 보유합니다. 언박싱: 언박싱은 값 유형이..

공부/C# 2023.03.04
반응형