본문 바로가기
C#

[C#] 함수

by balhea 2023. 12. 20.

이번 글에서는 함수에 대해서 알아 보겠습니다. 프로그래밍에서 함수는 코드의 재사용성과 구조화에 중요한 역할을 합니다. 함수는 특정 작업을 수행하는 코드 블록을 정의하고 호출할 수 있도록 해주는 구성 요소입니다. C#에서는 메서드(Method)라고도 불리며, 특정 작업을 수행하고 값을 반환하거나 어떤 동작을 수행할 수 있도록 해줍니다.

 

함수의 구조

C#에서 함수는 일반적으로 다음과 같은 구조를 가집니다.

// 반환타입 메서드이름(매개변수들) {
//            실행할 코드
//            return 반환값; (필요한 경우)
// }

// 예시
int Add(int a, int b) {
    int sum = a + b;
    return sum;
}

// int 앞에 주로 접근제한자(접근지정자) public, protected, private를 지정.

위의 예시에서 Add 메서드는 int형을 반환하고, a와 b라는 두 개의 정수형 매개변수를 받아들입니다. 이 메서드는 매개변수로 받은 두 수를 더하여 결과를 반환합니다.

 

함수의 장점

1. 재사용성

함수를 사용하면 동일한 코드를 여러 곳에서 호출하여 사용할 수 있습니다. 이로써 코드의 중복을 방지하고 유지보수성을 높일 수 있습니다.

 

2. 모듈화

함수를 작은 단위로 분리하여 기능을 모듈화할 수 있습니다. 이는 코드를 논리적인 단위로 분해하고 관리하기 쉽게 만듭니다.

 

3. 가독성 및 유지보수

함수는 코드를 더 읽기 쉽고 이해하기 쉽게 만들어줍니다. 또한, 코드를 수정하거나 업데이트하는 과정에서 필요한 부분만 수정할 수 있어 유지보수성을 향상시킵니다.

 

함수의 종류

1. 매개변수와 반환값이 있는 함수

위의 Add 함수처럼 매개변수를 받아들이고 값을 반환하는 함수입니다.

 

2. 매개변수는 없고 반환값만 있는 함수

어떠한 입력값을 받지 않고 어떤 결과를 반환하는 함수입니다.

 

3. 매개변수는 있으나 반환값이 없는 함수

일련의 작업을 수행하고 결과를 반환하지 않는 함수입니다. (void 반환 유형을 갖습니다.)

 

4. 매개변수와 반환값이 모두 없는 함수

어떤 입력값을 받지 않고 어떤 결과도 반환하지 않는 함수입니다.

 

함수 호출

함수를 호출하는 것은 함수의 이름을 사용하여 수행됩니다. 위에서 정의한 Add 함수를 호출하는 예제를 살펴봅시다.

int result = Add(5, 3); // Add 함수를 호출하고 그 결과를 'result' 변수에 저장합니다.
Console.WriteLine(result); // 'result' 값을 출력합니다. (결과: 8)

위 예제에서 Add(5, 3)은 Add 함수를 호출하고, 매개변수로 5와 3을 전달합니다. 그리고 함수가 반환하는 결과값을 result 변수에 저장하고 출력합니다.

 

함수의 사용 예시

1. 사용자 정의 함수

// 정수를 받아들여 두 배로 만들어 반환하는 함수
public int Double(int number)
{
    return number * 2;
}

// 사용자가 입력한 숫자를 받아들여 제곱을 반환하는 함수
public int Square(int number)
{
    return number * number;
}

위 예시에서 Double 함수는 입력된 정수를 두 배로 만들어 반환하고, Square 함수는 입력된 정수의 제곱을 반환합니다.

 

2. 재귀 함수(Recursive Function)

// 팩토리얼을 계산하는 재귀 함수
public int Factorial(int number)
{
    if (number == 0 || number == 1)
    {
        return 1;
    }
    else
    {
        return number * Factorial(number - 1);
    }
}

위의 Factorial 함수는 재귀적으로 자기 자신을 호출하여 입력된 숫자의 팩토리얼을 계산합니다.

 

3. 익명 함수(Anonymous Function)

// 덧셈을 수행하는 익명 함수
Func<int, int, int> add = delegate (int a, int b)
{
    return a + b;
};

익명 함수는 이름이 없는 함수로, delegate 키워드를 사용하여 정의됩니다. add 변수는 두 정수를 더하는 함수를 나타냅니다.

 

4. 람다 함수(Lambda Function)

// 곱셈을 수행하는 람다 함수
Func<int, int, int> multiply = (a, b) => a * b;

람다 함수는 간결한 형태로 함수를 정의하는 방법으로, => 기호를 사용하여 매개변수와 코드 블록을 표현합니다.

 

함수의 활용

코드 재사용성

유사한 작업을 여러 번 반복해야 할 때 함수를 사용하여 중복을 최소화하고 코드를 모듈화하여 재사용성을 높입니다.

 

디버깅 및 유지보수

함수를 사용하면 코드를 논리적인 단위로 분할하여 관리하기 쉽게 만들어줍니다. 이는 코드의 디버깅과 유지보수를 용이하게 합니다.

 

읽기 쉬운 코드

함수는 코드를 더 이해하기 쉽고 읽기 쉽게 만들어줍니다. 코드를 작성하는 동료들이나 자신이 작성한 코드를 이해하기 쉽게 만들어줍니다.

 

지금까지 함수에 대해 알아보았습니다. 함수는 프로그래밍에서 중요한 개념 중 하나이며, 효율적이고 구조화된 코드를 작성하는 데 큰 도움을 줍니다. 함수의 잘못된 사용은 버그의 원인이 될 수 있으므로, 명확하고 의미 있는 함수를 작성하는 것이 중요합니다. 

'C#' 카테고리의 다른 글

[C#] 사용자 정의 함수  (0) 2023.12.21
[C#] 함수의 종류  (0) 2023.12.21
[C#] 널 병합 연산자  (0) 2023.12.20
[C#] 연산자  (0) 2023.12.20
[C#] 데이터타입  (0) 2023.12.19