using System; // System 네임스페이스를 사용합니다. Console, Convert 등의 클래스가 포함되어 있습니다.
namespace Hello // Hello라는 이름의 네임스페이스를 정의합니다.
{
class MainApp // MainApp이라는 이름의 클래스를 정의합니다.
{
public static void Swap(int a, 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(x, y); // Swap 메서드를 호출합니다.
Console.WriteLine($"x:{x}, y:{y}"); // x와 y의 값을 출력합니다. (x:3, y:4)
}
}
}
Q1.
public static void Swap(int a, int b)
A1.
public: 접근 제한자로, 어디서든 이 메서드에 접근할 수 있도록 합니다.
static: 이 메서드가 클래스의 인스턴스를 생성하지 않고도 호출될 수 있음을 의미합니다.
void: 이 메서드가 값을 반환하지 않음을 나타냅니다.
Swap: 메서드의 이름입니다.
int a, int b: 메서드의 매개변수로, 정수형 변수 a와 b를 전달받습니다.
Q2.
메서드 선언 위치
A2.
C#에서는 메서드를 Main 메서드 전이나 후에 선언해도 괜찮음.
Q3.
코드 분석
A3.
이 코드는 Swap 메서드를 사용하여 두 변수의 값을 바꾸려는 의도로 작성되었습니다. 하지만 C#에서는 메서드에 값을 전달할 때 값 복사가 이루어지기 때문에, Swap 메서드 내부에서 a와 b의 값을 바꿔도 Main 메서드의 x와 y 값에는 영향을 주지 않습니다.
따라서 Swap 메서드를 호출한 후에도 x와 y의 값은 변경되지 않고 그대로 출력됩니다.
만약 x와 y의 값을 실제로 바꾸고 싶다면, ref 키워드를 사용하여 변수를 참조로 전달해야 합니다.