반응형

콜 바이 벨류 3

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

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

공부/C# 2023.03.05

콜 바이 벨류(Call by Value)와 콜 바이 레퍼런스(Call by Reference)의 차이점

C#에서 함수에 인수를 전달하는 기본 방법은 "콜 바이 벨류(Call by Value)", 즉 값에 의한 호출입니다. 즉, 인자 값이 함수에 전달되고 함수 내에서 인자 값을 변경해도 함수 외부의 인자 값에는 영향을 미치지 않는다는 것입니다. 말로 설명하면 어려우니 간단한 예제를 보겠습니다. 다음 예제는 콜 바이 벨류(Call by Value), 값에 의한 호출에 대한 예제입니다. void Increment(int x) { x += 1; } int main() { int a = 1; Increment(a); Console.WriteLine(a); // Output의 값은 1이다. } 위 예시에서 a의 값은 a의 값 만큼 증가되는 함수에 전달됩니다. 이 때 함수 내에서는 x의 값이 증가하지만, 이 변경된 값..

공부/C# 2022.12.16
반응형