C# 함수/메소드 기본 개념 및 작성 방법

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#에서의 함수/메소드는 프로그램의 기능을 분할하고 코드의 재사용성을 높이는 데 중요한 역할을 합니다. 올바른 메소드 작성 방법을 숙지하고, 적절한 사용은 효과적인 프로그래밍에 큰 도움이 됩니다.

참고 자료

함께 보면 좋은 이전 게시글

위로 스크롤