C# - 메서드: 초보자 가이드
안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 C# 프로그래밍에서 가장 기본적인 개념 중 하나인 메서드에 대해 깊이 다룰 것입니다. 코드를 한 줄도 작성해본 적이 없더라도 걱정하지 마세요 - 저는 여러분을 단계별로 안내해 드릴 것입니다. 수년 동안 수많은 학생들을 가르쳐온 경험을 바탕으로 말이죠. 그럼, 좋아하는 음료를 한 잔 마시면서 이 흥미로운 여정에 함께 동참해 보세요!
메서드는 무엇인가요?
자, 구체적인 내용으로 들어가기 전에 메서드가 무엇인지 이해해 보겠습니다. 메서드는 프로그래밍의 동사라고 생각해 보세요 - 프로그램이 수행할 수 있는 행동입니다. 실제 생활에서 "커피를 내린다", "차를 몰다", "이메일을 쓴다"와 같은 행동이 있듯이, 프로그래밍에서는 특정 작업을 수행하는 메서드가 있습니다.
C#에서 메서드 정의하기
이제 우리 코드의 스타인 이러한 행동을 가득 채운 메서드를 만들어 보겠습니다!
기본 메서드 구조
여기서 C#의 기본 메서드 구조를 보여드리겠습니다:
AccessModifier ReturnType MethodName(ParameterList)
{
// 메서드 본문
// 실행할 코드
}
이것이 무서워하지 마세요! 하나씩 설명해 보겠습니다:
-
AccessModifier
: 이 메서드를 누가 사용할 수 있는지 결정합니다 (이후 자세히 다룹니다). -
ReturnType
: 이 메서드가 어떤 종류의 결과를 반환하는지. 숫자, 텍스트, 또는 아무것도 아닌 (void)일 수 있습니다. -
MethodName
: 우리가 부르는 메서드의 이름 - 설명적이게 만들어 주세요! -
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