C# - 메서드: 초보자 가이드

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 C# 프로그래밍에서 가장 기본적인 개념 중 하나인 메서드에 대해 깊이 다룰 것입니다. 코드를 한 줄도 작성해본 적이 없더라도 걱정하지 마세요 - 저는 여러분을 단계별로 안내해 드릴 것입니다. 수년 동안 수많은 학생들을 가르쳐온 경험을 바탕으로 말이죠. 그럼, 좋아하는 음료를 한 잔 마시면서 이 흥미로운 여정에 함께 동참해 보세요!

C# -  Methods

메서드는 무엇인가요?

자, 구체적인 내용으로 들어가기 전에 메서드가 무엇인지 이해해 보겠습니다. 메서드는 프로그래밍의 동사라고 생각해 보세요 - 프로그램이 수행할 수 있는 행동입니다. 실제 생활에서 "커피를 내린다", "차를 몰다", "이메일을 쓴다"와 같은 행동이 있듯이, 프로그래밍에서는 특정 작업을 수행하는 메서드가 있습니다.

C#에서 메서드 정의하기

이제 우리 코드의 스타인 이러한 행동을 가득 채운 메서드를 만들어 보겠습니다!

기본 메서드 구조

여기서 C#의 기본 메서드 구조를 보여드리겠습니다:

AccessModifier ReturnType MethodName(ParameterList)
{
// 메서드 본문
// 실행할 코드
}

이것이 무서워하지 마세요! 하나씩 설명해 보겠습니다:

  1. AccessModifier: 이 메서드를 누가 사용할 수 있는지 결정합니다 (이후 자세히 다룹니다).
  2. ReturnType: 이 메서드가 어떤 종류의 결과를 반환하는지. 숫자, 텍스트, 또는 아무것도 아닌 (void)일 수 있습니다.
  3. MethodName: 우리가 부르는 메서드의 이름 - 설명적이게 만들어 주세요!
  4. ParameterList: 이 메서드가 작업을 수행하기 위해 필요한 입력입니다.

예제

간단한 메서드를 만들어 인사를 전해보겠습니다:

public static void SayHello(string name)
{
Console.WriteLine($"안녕하세요, {name}! C#의 세계에 환영합니다!");
}

이 예제를 구성해 보겠습니다:

  • public: 이 메서드는 우리 프로그램 어디서나 사용할 수 있습니다.
  • static: 이 메서드를 사용하기 위해 오브젝트를 생성할 필요가 없습니다 (아직 이해가 안 되시더라도 걱정 마세요).
  • void: 이 메서드는 어떤 값을 반환하지 않습니다.
  • SayHello: 우리의 메서드 이름입니다.
  • (string name): 이 메서드는 'name'이라는 문자열 입력을 받습니다.

메서드 호출하기

메서드를 만드는 것은 훌륭하지만, 그蛋糕을 먹지 않는 것과 마찬가지입니다! 메서드를 사용하는 방법을 배워보겠습니다.

기본 메서드 호출

우리의 SayHello 메서드를 사용하려면 다음과 같이 작성합니다:

SayHello("알리스");

이렇게 하면 다음과 같은 출력이 나옵니다: "안녕하세요, 알리스! C#의 세계에 환영합니다!"

이렇게 멋지죠? 이름을 바꿔서 누구에게나 인사를 전할 수 있습니다!

반환 값을 가진 메서드

우리는 수학 작업을 수행하는 메서드를 만들어 보겠습니다:

public static int Add(int a, int b)
{
return a + b;
}

이 메서드를 사용하려면 다음과 같이 합니다:

int result = Add(5, 3);
Console.WriteLine($"5 + 3 = {result}");

이렇게 하면 다음과 같은 출력이 나옵니다: "5 + 3 = 8"

재귀 메서드 호출

이제 조금 더 고급 내용으로 나아가 보겠습니다 - 재귀 메서드. 이 메서드는 자신을 호출합니다. 코드의 인셈션과 같은东西!

여기서 계산의 고전적인 예제 - 계산을 보여드리겠습니다:

public static int Factorial(int n)
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
return n * Factorial(n - 1);
}
}

이를 사용하려면 다음과 같이 합니다:

int result = Factorial(5);
Console.WriteLine($"5의 계산은 {result}");

이렇게 하면 다음과 같은 출력이 나옵니다: "5의 계산은 120"

이 메서드는 자신을 계속 호출하여 1이나 0에 도달할 때까지 계산을 반복합니다. 계산의 러시아 인형과 같은 것입니다!

매개변수를 메서드에 전달하기

이미 매개변수를 전달하는 예제를 본 적이 있지만, 조금 더 깊이 다루어 보겠습니다.

값을 전달하는 매개변수

당신이 값을 전달할 때, C#은 그 값을 복사합니다. 메서드 내에서 매개변수의 값을 변경해도 원래 값은 영향을 받지 않습니다.

public static void DoubleValue(int x)
{
x = x * 2;
Console.WriteLine($"메서드 내부: {x}");
}

// 사용
int num = 5;
DoubleValue(num);
Console.WriteLine($"메서드 외부: {num}");

이렇게 하면 다음과 같은 출력이 나옵니다:

메서드 내부: 10
메서드 외부: 5

참조 매개변수

occasionally, we want changes inside the method to affect the original value. We use the ref keyword for this:

public static void DoubleValueRef(ref int x)
{
x = x * 2;
Console.WriteLine($"메서드 내부: {x}");
}

// 사용
int num = 5;
DoubleValueRef(ref num);
Console.WriteLine($"메서드 외부: {num}");

이렇게 하면 다음과 같은 출력이 나옵니다:

메서드 내부: 10
메서드 외부: 10

메서드 오버로딩

메서드에 대해 마지막으로 알아야 할 흥미로운 점 하나 더 있습니다 - 동일한 이름을 가진 여러 메서드를 가질 수 있습니다. 매개변수 목록이 다르면 됩니다. 이를 메서드 오버로딩이라고 합니다.

public static int Add(int a, int b)
{
return a + b;
}

public static double Add(double a, double b)
{
return a + b;
}

// 사용
Console.WriteLine(Add(5, 3));        // int 버전을 사용합니다
Console.WriteLine(Add(5.5, 3.2));    // double 버전을 사용합니다

메서드 유형 요약

다양한 메서드 유형을 다루었으니 빠른 참고 표를 제공해 드리겠습니다:

메서드 유형 설명 예제
비반환 메서드 행동을 수행하지만 값을 반환하지 않음 void SayHello(string name)
반환 값을 가진 메서드 행동을 수행하고 값을 반환함 int Add(int a, int b)
재귀 메서드 자신을 호출하여 문제를 해결함 int Factorial(int n)
오버로드된 메서드 동일한 이름을 가진 여러 메서드로 매개변수 목록이 다름 int Add(int a, int b)double Add(double a, double b)

이제 C# 메서드의 세계로 첫 걸음을 냈습니다. 연습이 완벽을 이루는 길입니다. 자신의 메서드를 만들어 보세요, 매개변수를 섞어보세요, 그리고 무엇을 만들 수 있는지 보세요. 얼마 지나지 않아 복잡한 프로그램을 쉽게 만들 수 있을 것입니다. 행복한 코딩, 미래의 개발자 여러분!

Credits: Image by storyset