본문 바로가기
C#

C# 메서드의 정의

by 고체물리학 2020. 11. 1.

메서드(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() 메서드 끝

[결과]

 

 

 

반응형

댓글