[C# 기초강의] Ch 06. 메소드

728x90

https://www.youtube.com/watch?v=GcYz5Pv6Joc&list=PLVsNizTWUw7GN8wPRhclbKuQa9aI9Cj2V&index=6

📌 메서드란?

  • 일련의 코드를 하나의 이름 아래 묶은 것
  • 묶음 코드는 메서드의 이름을 불러 주는 것만으로도 실행
  • C/C#에서는 함수, 파스칼에서는 프로시져 등으로 부름

◾ 메서드 선언하기

  • 클래스 내부에 선언
  • 메서드 선언 필수요소 3가지
    1) 반환형식
    2) 메서드 이름
    3) 매개변수 목록
  • 결과를 반환할 때 return 문 사용
class 클래스이름
{
	한정자 반환_형식, 메서드의 이름 ( 매개변수_목록 )
     {
     	//실행하고자 하는 코드
        // return 메서드의_결과;
     }
}

 

◾ 메서드 호출하기

반환형식 메서드이름 = 클래스이름.메서드();

 

◾ 참조로 인수 전달하기

  • 매개변수가 인수를 참조
  • ref 키워드 사용하여 선언/호출
public void Swap ( ref int a, ref int b) 
{
 int tmp = b;
 b = a
 a = tmp
}

public void Main (string[] args)
{
 int x = 3;
 int y = 4;
 
 Swap (ref x, ref y);
}

 

◾ 출력 전용 매개변수

  • 메서드는 out 키워드로 한정한 매개변수에 결과를 입력야함
  • out 키워드는 ref키워브돠 비슷하지만, 참조로 인수 값을 전달받지 못하는 경우 인수의 값이 수정되지 않아도 컴파일러가 에러를 출력하지 않음
void Divide (int a, int b, out int quotient, out int remainder)
{
 quotient = a/bl
 remainder = a%b;
}


int a = 20;
int b = 3;
int c;
int d;

Divide (a, b, out c, out d);
Console.WriteLine("Quotient : {0}, Remainder {1} : ", c, d);


◾ 메서드 오버로딩 - 하나의 메서드 이름에 여러 버전의 구현을 올리는 것

int Plus (int a, int b)
{
	return a+b;
}

double Plus (double a, double b)
{
	return a+b;
}


int result1 = Plus (1,2);
double result2 = Plus(1.2, 3.4);


◾ 가변길이 인수 - 개수를 유연하게 조절할 수 있는 인수 - Params 키워드와 배열을 이용하여 선언 - 데이터 형식이 같다면 가변길이 인수를 통해 오버로딩 대신 사용

int sum  (params int[] args )
{
	int sum = 0;
    for(int i=0; i<args.Length; i++)
    {
    	sum += args[i]l
     }
     
     return sum;
}

int total = 0;

total = Sum (1, 2);
total = Sum (1, 2, 3);
total = Sum (1,2,3,4,5 ... 10);


◾ 명명된 인수 - 메서드 호출 시 매개변수의 이름을 명시하여 매개변수에 데이터를 바인드하는 기능

static void PrintProfile (string name, string phone)
{
	Console.WriteLine ("Name:{0}, Phone:{1}", name, phone);
}

static void Main(string[] args)
{
	PrintProfile ( name : "박찬호", pohne : "010-1234-5678");
}


◾ 선택적 인수 - 입력해도되고 안해도됨

- 메서드 선언시 매개변수에 기본값을 할당 - 호출자가 인수를 입력하지 않는 경우 메서드는 기본값이 할당된 매개변수 사용 - 호출자는 해당 매개 변수에 대한 인수 입력 여부 선택이 가능해짐

void MyMethod (int a=0; int b=0)
{
	Console.WriteLine("{0},{1}", a,b);
}

MyMethod(3); //매개변수 b생략
MyMethod(3,4);
728x90