using System; // System 네임스페이스를 사용합니다. Console, Convert 등의 클래스가 포함되어 있습니다.
namespace Hello // Hello라는 이름의 네임스페이스를 정의합니다.
{
class MainApp // MainApp이라는 이름의 클래스를 정의합니다.
{
public static void Swap(ref int a, ref int b) // Swap이라는 이름의 메서드를 정의합니다.
{
int temp = b; // 정수형 변수 temp를 선언하고 b의 값을 저장합니다.
b = a; // b에 a의 값을 저장합니다.
a = temp; // a에 temp에 저장된 b의 값을 저장합니다.
}
static void Main(string[] args) // 프로그램의 진입점인 Main 메서드를 정의합니다.
{
int x = 3; // 정수형 변수 x를 선언하고 3으로 초기화합니다.
int y = 4; // 정수형 변수 y를 선언하고 4로 초기화합니다.
Console.WriteLine($"x:{x}, y:{y}"); // x와 y의 값을 출력합니다. (x:3, y:4)
Swap(ref x, ref y); // Swap 메서드를 호출합니다.
Console.WriteLine($"x:{x}, y:{y}"); // x와 y의 값을 출력합니다. (x:4, y:3)
}
}
}
Q1.
public static void Swap(ref int a, ref int b)
A1.
public: 접근 제한자로, 어디서든 이 메서드에 접근할 수 있도록 합니다.
static: 이 메서드가 클래스의 인스턴스를 생성하지 않고도 호출될 수 있음을 의미합니다.
void: 이 메서드가 값을 반환하지 않음을 나타냅니다.
Swap: 메서드의 이름입니다.
ref int a, ref int b: 메서드의 매개변수로, 정수형 변수 a와 b를 참조로 전달받습니다. ref 키워드를 사용하면 메서드 내부에서 변수의 값을 변경했을 때, 원래 변수의 값도 변경됩니다.
Q2.
코드 분석
A2.
이 코드는 Swap 메서드를 사용하여 두 변수 x와 y의 값을 바꿉니다. ref 키워드를 사용하여 변수를 참조로 전달했기 때문에, Swap 메서드 내부에서 a와 b의 값을 바꾸면 Main 메서드의 x와 y 값도 변경됩니다.
따라서 Swap 메서드를 호출한 후 x와 y의 값은 4와 3으로 바뀌어 출력됩니다.
ref 키워드를 사용하면 메서드 내부에서 외부 변수의 값을 변경할 수 있으므로, 변수의 값을 교환하는 것처럼 메서드 외부에 영향을 주는 작업을 수행할 때 유용하게 사용할 수 있습니다.