Pass by Value와 Pass by Reference의 차이점
추천 자료: ASP.NET Core 인증 및 권한 부여
값 전달과 참조 전달을 다시 비교해서 살펴보겠습니다. Pass by Value(값에 의한 전달)는 함수에 값을 전달할 때, 원본 값의 복사본(copy)을 전달하는 방식입니다. 함수 내부에서 값을 수정하더라도 원본 값(original value)에는 영향을 미치지 않습니다.
반면, Pass by Reference(참조에 의한 전달)는 값의 참조(reference)를 함수에 전달하는 방식입니다. 이 방식에서는 함수 내부에서 값을 수정하면 원본 값도 함께 변경됩니다. ref
또는 out
키워드를 사용하여 참조를 전달합니다.
코드: ValueReferenceDemo.cs
using System;
class ValueReferenceDemo
{
static void Main()
{
int originalValue = 10;
// Pass by Value
Console.WriteLine("PassByValue 실행 전: " + originalValue);
PassByValue(originalValue);
Console.WriteLine("PassByValue 실행 후: " + originalValue);
// Pass by Reference
Console.WriteLine("\nPassByReference 실행 전: " + originalValue);
PassByReference(ref originalValue);
Console.WriteLine("PassByReference 실행 후: " + originalValue);
}
// Pass by Value: 전달된 값의 복사본을 수정
static void PassByValue(int value)
{
value += 10;
Console.WriteLine("PassByValue 내부에서 수정된 값: " + value);
}
// Pass by Reference: 원본 값을 직접 수정
static void PassByReference(ref int value)
{
value += 10;
Console.WriteLine("PassByReference 내부에서 수정된 값: " + value);
}
}
PassByValue 실행 전: 10
PassByValue 내부에서 수정된 값: 20
PassByValue 실행 후: 10
PassByReference 실행 전: 10
PassByReference 내부에서 수정된 값: 20
PassByReference 실행 후: 20
Pass by Value는 함수 내부 변경 사항이 원본 값에 영향을 주지 않습니다. originalValue
는 함수 외부에서 유지됩니다. Pass by Reference는 함수 내부 변경 사항이 원본 값에 반영됩니다. originalValue
가 수정됩니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!