임준일의 개인 블로그

#12 함수(Function) 2 본문

C#

#12 함수(Function) 2

임준일 2023. 1. 1. 20:11
함수를 만들고 반복해서 사용하기
 
 
함수를 만드는 목적 중 하나는 반복 사용에 있다.
 
함수를 만들고 여러 번 호출해서 사용하는 방법을 알아보자.
 
 
// () 안에 인자가 들어가면 함수 중복이 가능하다.
static int Hi(string text)
{
        Console.WriteLine(text);
        return 0;
}
 
 
함수를 만들어 놓고 기능이 동일한 함수만 사용하지는 않는다.
 
호출할 때마다 조금씩 다른 기능을 적용할 때는 함수의 매개변수를 달리하여 호출할 수 있다.
 
 
매개변수(인자, 파라미터)는 함수에 어떤 정보를 넘겨주는 데이터를 나타낸다.
 
이러한 매개변수는 콤마를 기준으로 여러 개 설정할 수 있으며, 문자열과 숫자 등 모든 데이터 형식을 사용할 수 있다.
 
 
- 매개변수(인자, 파라미터)가 없는 함수 : 매개변수도 없고 반환값도 없는 함수 형태는 가장 단순한 형태의 함수이다.
 
앞에서 사용한 함수 중에서 모든 변수에 있는 값을 문자열로 변환시키는 ToString() 메서드처럼 빈 괄호만 있는 함수 형식을 나타낸다.
 
 
- 매개변수가 있는 함수 : 특정 함수에 인자 값을 1개 이상 전달하는 방식이다.
 
정수형, 실수형, 문자형, 문자열형, 개체형 등 여러 가지 데이터 형식을 인자 값으로 전달할 수 있다.
 
 
- 반환값이 있는 함수(결과값이 있는 함수) : 함수의 처리 결과를 함수를 호출한 쪽으로 반환할 때는 return 키워드를 사용하여 데이터를 돌려줄 수 있다.
 
 
- 매개변수가 가변(여러 개)인 함수 : c#에서는 클래스 하나에 매개변수의 형식과 개수를 달리하여 이름이 동일한 함수를 여러 개 만들 수 있다.
 
이를 가리켜 함수 중복 또는 함수 오버로드(Overload)라고 한다.
 
 
함수 오버로드 : 다중 정의

 

클래스 하나에 매개변수를 달리해서 이름이 동일한 함수 여러 개를 정의할 수 있는데, 이를 함수 오버로드라고 한다.

 

우리말로는 여러 번 정의한다는 의미이다.

 

 

재귀 함수


함수에서 함수 자신을 호출하는 것을 재귀(Recursion) 또는 재귀 함수라고 한다.

 

static int Factorial(int n)
{
        // 여기서 탈출할 것임.
        if(n == 0 || n == 1)
        {
                return 1;
        }

        Console.WriteLine("n의 값은 : {0}", n);
           
        return n * Factorial(n - 1); // 여기서 재귀 호출했음.
}
 
 
함수 범위: 전역 변수와 지역 변수

 

클래스와 같은 레벨에서 선언된 변수를 전역 변수(Global Variable) 또는 필드(Field)라고 하며,

함수 레벨에서 선언된 변수를 지역 변수(Local Variable)라고 한다.

 

이때 동일한 이름으로 변수를 전역 변수와 함수 내의 지역 변수로 선언할 수 있다.

 

함수 내에서는 함수 범위에 있는 지역 변수를 사용하고, 함수 범위 내에 선언된 변수가 없으면 전역 변수 내에 선언된 변수를 사용한다.

 

단, c#에서는 전역 변수가 아닌 필드라는 단어를 주로 사용하며, 전역 변수는 언더스코어(_) 또는 m_ 접두사를 붙이는 경향이 있다.

 

함수 내의 변수가 지역 변수(Local Variable)이다.

 

 

화살표 함수

 

화살표 모양의 연산자인 화살표 연산자(=>)를 사용하여 메서드 코드를 줄일 수 있다.

 

이를 화살표 함수(Arrow Function)라고 한다.

 

프로그래밍에서 화살표 함수 또는 화살표 메서드는 람다 식(Lambda expression)의 또다른 이름이다.

 

화살표 함수를 사용하면 함수를 줄여서 표현할 수 있다.

 

함수 고유의 표현을 줄여서 사용하면 처음에는 어색할 수 있다.

 

하지만 이 방식에 익숙해지면 차후에는 코드의 간결함을 유지할 수 있다.

 

 

// 화살표 함수 사용 예시
static void Hi() => Console.WriteLine("안녕하세요.");
static void Multiply(int a, int b) => Console.WriteLine(a * b);
 

 

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

#14 클래스  (0) 2023.01.01
#13 구조체  (0) 2023.01.01
#11 함수(Function)  (0) 2022.12.26
#10 모드 연산과 배열들  (0) 2022.12.25
#9 배열(Array)  (0) 2022.12.22