매개변수, 값에 의한 전달

00·2024년 12월 10일

C#

목록 보기
5/149
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 키워드를 사용하여 변수를 참조로 전달해야 합니다.

0개의 댓글