메서드(Method)
- 프로그램(작업)의 최소 실행 단위
- 반드시 호출되어야만 실행될 수 있음
=> 단, main() 메서드는 자동으로 호출되는 메서드로, 프로그램 시작점이라고 함
- 메서드를 호출하면 프로그램 흐름이 변하여 메서드 내부로 실행 흐름이 이동함
=> 메서드 실행이 끝나면 메서드를 호출한 곳으로 돌아가야함
[메서드 정의 기본 문법]
[제한자] 리턴타입 메서드명([파라미터데이터타입 변수명1, ..., 파라미터데이터타입 변수명n]) {
// 메서드가 호출되면 수행할 작업들...
[return [리턴할 데이터];]
}
=> 전달인자(Argument) 또는 매개변수(Parameter) 란?
- 메서드를 호출할 때 전달하는 데이터
=> 리턴값이란?
- 메서드를 호출하여 작업이 수행된 후 가지고 돌아갈 데이터
- 이 때, 리턴값에 대한 데이터타입을 메서드의 리턴타입 부분에 명시
- 만약, 리턴값이 없을 경우에는 특수 데이터타입인 void 타입을 반드시 명시해야한다
- 리턴값은 반드시 한 개만 지정 가능
=> 메서드명은 변수명과 동일하게 식별자 작성 규칙의 적용을 받는다.
[메서드 형태 4가지 ]
1. 매개변수(파라미터)도 없고, 리턴값도 없는 메서드
=> 매개변수가 없으므로 메서드명 뒤의 소괄호() 안에 아무것도 명시하지 않음
=> 리턴값이 없으므로 메서드명 앞에 void 명시
[예제코드]
static void Main(string[] args) { Console.WriteLine("C#시작하기"); HelloWorld(); // HelloWorld() 메서드 호출(매개변수가 없으므로 메서드명 뒤의 소괄호에 아무것도 없어야함) // => 메서드가 호출되면 순차적으로 진행되던 프로그램의 흐름이 호출된 메서드로 변경됨 // 따라서, 호출된 메서드 내의 모든 작업을 처리한 후에 다시 원래 자리로 돌아와서 다음 작업 수행 Console.WriteLine("HelloWorld() 메서드 종료!"); // HelloWorld() 메서드 종료 후에 실행되는 문장 Console.WriteLine("------------------------"); } public static void HelloWorld() { Console.WriteLine("Hello World"); // 리턴타입이 void 일 경우 return 문을 생략할 수도 있고, // 아무것도 전달하지 않는 return 문을 사용할 수 도 있다. // => 특정 조건에 따라 메서드 수행을 중단해야할 경우 조건문 내에서 return 문 사용 return; // 현재 메서드를 종료하고 호출한 곳으로 아무 값도 가지지 않은 채 돌아감 } // HelloWorld() 메서드 끝
[결과]
2. 매개변수(파라미터)는 없고, 리턴값만 있는 메서드
=> 매개변수가 없으므로 메서드명 뒤의 소괄호() 안에 아무것도 명시하지 않음
=> 리턴값이 있으므로 메서드명 앞에 리턴할 데이터의 데이터타입을 명시
(ex. 문자열을 리턴할 경우 String, 정수형 데이터를 리턴할 경우 int 를 명시)
[예제코드]
static void Main(string[] args) { Console.WriteLine("C#시작하기"); Console.WriteLine(HelloWorld2()); Console.WriteLine("------------------------"); } public static String HelloWorld2() { // 리턴타입이 String 타입으로 명시되어 있으므로 // 메서드가 종료될 때 반드시 return 문이 필수이며, return 문 뒤에 String 타입 데이터(또는 변수)가 필수 Console.Write("Hello"); String result = "World"; //return "World"; // 리턴할 데이터를 직접 명시하거나 return result; // 리턴할 데이터의 변수를 지정할 수 있다 // return 10; // 오류 발생! 리턴타입과 다른 데이터를 리턴할 경우 오류 발생 } // HelloWorld2() 메서드 끝
[결과]
3. 매개변수(파라미터)만 있고, 리턴값은 없는 메서드
=> 매개변수가 있으므로 메서드명 뒤의 소괄호() 안에 전달받을 데이터를 저장할 "변수 선언"
=> 리턴값이 없으므로 리턴타입을 void 로 명시
[예제코드]
static void Main(string[] args) { int i = 1; Console.WriteLine("C#시작하기"); Console.WriteLine(i + "부터 시작"); HelloWorld3(i); // 매개변수가 있으므로 메서드 호출 시 소괄호 안에 전달할 데이터 또는 변수 명시 // HelloWorld3(1); Console.WriteLine("HelloWorld3() 메서드 종료!"); Console.WriteLine("------------------------"); } public static void HelloWorld3(int i) { // 전달하는 매개변수 타입과 일치하는 변수 선언 필수! // 메서드 호출 시 전달되는 정수를 전달받아 int형 변수 i 에 저장 // => 즉, 외부에서 메서드 호출 시 HelloWorld3(1); 형태로 호출했다면 HelloWorld3 변수에 1이 저장됨 Console.WriteLine(i+"번째: HelloWorld"); i += 1; Console.WriteLine(i + "번째: HelloWorld"); // return; // 리턴타입이 void 일 경우 return 문 생략 가능 } // HelloWorld3() 메서드 끝
[결과]
4. 매개변수(파라미터)도 있고, 리턴값도 있는 메서드
=> 매개변수가 있으므로 메서드명 뒤의 소괄호() 안에 전달받을 데이터를 저장할 "변수 선언"
=> 리턴값이 있으므로 메서드명 앞에 리턴할 데이터의 데이터타입을 명시
[예제코드]
static void Main(string[] args) { int i = 1; Console.WriteLine("C#시작하기"); Console.WriteLine(i + "부터 시작"); String result = HelloWorld4(i); Console.WriteLine(result+"메서드 종료!"); Console.WriteLine("------------------------"); } public static String HelloWorld4(int i) { Console.WriteLine(i+"번째: HelloWorld"); i += 1; Console.WriteLine(i + "번째: HelloWorld"); return "HelloWorld4()"; // 리턴타입이 String 이므로 문자열 리터럴 또는 변수 리턴 필수! } // HelloWorld4() 메서드 끝
[결과]
'C#' 카테고리의 다른 글
C# 메서드 사용(1) - 인스턴스 변수, 로컬변수 선언 (0) | 2021.01.13 |
---|---|
C# 메서드 정의(2) (1) | 2020.11.04 |
C# break문, continue문 사용하기 (0) | 2020.10.31 |
C# 반복문 do ~ while문 사용하기(3) (1) | 2020.10.25 |
C# 반복문 while문 사용하기(2) (0) | 2020.10.23 |
댓글