C# 함수/메소드 기본 개념 및 작성 방법
프로그래밍에서 함수나 메소드는 코드의 재사용성을 높이고, 가독성을 향상시키며, 모듈화를 지원하는 핵심적인 요소입니다. C#에서도 이러한 함수/메소드의 중요성은 변함없으며, 이번 글에서는 그 기본적인 개념 및 작성 방법에 대해 알아보겠습니다.
1. 함수와 메소드란?
함수와 메소드는 특정 작업을 수행하는 코드의 집합입니다. 기본적으로, 함수는 독립적으로 존재하며, 메소드는 클래스나 구조체와 같은 객체 내에서 정의됩니다. C#에서는 대부분의 함수들을 메소드로 취급합니다.
2. C#에서의 함수/메소드 작성 방법
C#에서 함수나 메소드를 정의하기 위해 반환 타입, 메소드 이름, 그리고 괄호()를 사용합니다.
2.1 기본 구조
함수/메소드의 기본 구조는 아래와 같습니다.
[access_modifier] [return_type] MethodName(parameters)
{
// 메소드 내용
}
2.2 예제
간단한 메소드 작성 예제입니다.
public int Add(int a, int b)
{
return a + b;
}
3. 반환 타입
메소드는 작업을 수행한 후 결과를 반환할 수 있습니다. void는 결과를 반환하지 않는다는 것을 나타냅니다. 그 외에도 다양한 데이터 타입을 반환값으로 사용할 수 있습니다.
3.1 void 반환 타입
void 반환 타입은 메소드가 값을 반환하지 않을 것임을 나타냅니다.
public void DisplayMessage()
{
Console.WriteLine("Blue, Share");
}
3.2 값 반환 타입
메소드는 정수, 실수, 문자열 등 다양한 타입의 값을 반환할 수 있습니다. 아래는 정수 값을 반환하는 메소드의 예제입니다.
public int AddTwoNumbers(int a, int b)
{
return a + b;
}
3.3 사용 예제
메소드의 반환 값을 변수에 저장하거나, 다른 연산에 사용할 수 있습니다.
int result = AddTwoNumbers(3, 4);
Console.WriteLine($"The sum is: {result}");
4. 매개변수와 인수
메소드는 매개변수를 통해 외부에서 데이터를 받아올 수 있습니다. 호출 시에 전달되는 값을 인수라고 합니다.
4.1 매개변수의 정의
매개변수는 메소드 선언부에 나열되며, 메소드 내부에서 해당 데이터를 사용할 수 있게 합니다.
public void PrintMessage(string message)
{
Console.WriteLine(message);
}
4.2 메소드 호출 시 인수 전달
메소드를 호출할 때 인수를 전달하여 매개변수에 할당된 데이터를 메소드 내부에서 사용합니다.
PrintMessage("Blue, Share");
4.3 다중 매개변수
메소드는 여러 개의 매개변수를 가질 수 있습니다. 호출 시에는 매개변수의 순서대로 인수를 전달합니다.
public void DisplayDetails(string name, int age)
{
Console.WriteLine($"Name: {name}, Age: {age}");
}
DisplayDetails("BlueShare", 30);
5. 메소드 오버로딩
C#에서는 같은 이름의 메소드를 여러 개 가질 수 있습니다. 이것을 메소드 오버로딩이라고 하며, 매개변수의 유형이나 개수가 다를 때 사용됩니다.
5.1 오버로딩의 기본 개념
메소드 오버로딩을 사용하면 동일한 메소드 이름을 사용하여 다양한 작업을 수행할 수 있습니다. 매개변수의 유형이나 개수를 변경하여 같은 이름의 메소드를 여러 번 정의할 수 있습니다.
5.2 오버로딩 예제
public class Calculator
{
// 두 정수를 더하는 메소드
public int Add(int a, int b)
{
return a + b;
}
// 세 정수를 더하는 메소드
public int Add(int a, int b, int c)
{
return a + b + c;
}
// 두 실수를 더하는 메소드
public double Add(double a, double b)
{
return a + b;
}
}
Calculator calc = new Calculator();
Console.WriteLine(calc.Add(3, 4)); // 결과: 7
Console.WriteLine(calc.Add(3, 4, 5)); // 결과: 12
Console.WriteLine(calc.Add(1.2, 3.4)); // 결과: 4.6
5.3 오버로딩의 규칙
메소드를 오버로드할 때는 반환 타입만으로는 구분이 불가능합니다. 오버로딩된 메소드는 매개변수의 개수나 유형으로만 구분됩니다.
6. ref, out, params 키워드
C#에서는 메소드에 데이터를 전달할 때 ref, out, params와 같은 키워드를 사용하여 다양한 방식으로 데이터를 전달할 수 있습니다.
6.1 ref 키워드
ref 키워드는 메소드에 변수를 참조로 전달하도록 합니다. 따라서 메소드 내에서 해당 변수의 값을 변경하면 원래 변수의 값도 변경됩니다.
public void UpdateValue(ref int x)
{
x = x + 10;
}
int value = 5;
UpdateValue(ref value);
Console.WriteLine(value); // 결과: 15
6.2 out 키워드
out 키워드는 메소드에서 값을 반환할 때 사용됩니다. out 키워드로 전달된 변수는 메소드 내에서 반드시 값을 할당해야 합니다.
public void GetValues(out int x, out int y)
{
x = 5;
y = 10;
}
int a, b;
GetValues(out a, out b);
Console.WriteLine($"a: {a}, b: {b}"); // 결과: a: 5, b: 10
6.3 params 키워드
params 키워드는 가변 개수의 인수를 배열로 받는 메소드를 정의할 때 사용됩니다.
public int Sum(params int[] numbers)
{
int total = 0;
foreach (int num in numbers)
{
total += num;
}
return total;
}
Console.WriteLine(Sum(1, 2, 3, 4, 5)); // 결과: 15
7. 결론
C#에서의 함수/메소드는 프로그램의 기능을 분할하고 코드의 재사용성을 높이는 데 중요한 역할을 합니다. 올바른 메소드 작성 방법을 숙지하고, 적절한 사용은 효과적인 프로그래밍에 큰 도움이 됩니다.
참고 자료
- Microsoft 공식 문서: 메소드 (C# 프로그래밍 가이드) (https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/methods)
함께 보면 좋은 이전 게시글
- C# 변수와 상수 이해하기: 선언, 할당, 사용
- C# 기본 연산자 사용하기: 산술, 관계, 논리 연산자
- C# 기본 연산자 사용하기: 문자열 연결, 증감, 할당 연산자
- C#에서의 예외 처리 방법: Exception, throw
- C# 배열 사용하기: 선언, 초기화, 접근 방법
이 글이 도움이 되셨다면 공유 부탁 드립니다.