티스토리 뷰
메소드 : 함수
메소드를 호출한다 : 함수를 호출한다.
한정자 반환형식 메소드명 (매개변수)
{ 열린스코프
} 닫힌스코프
일을 처리하는 방법 방식 정도
각 객체는 다신만의 속성(데이터) 기능(메소드) 가짐
클래스안에서 선언된다.
클래스: 객체를 위한 청사진
매개변수 call by value, call by reference( ref/ out)
void swap(int a, int b) ; : 원본 변수가 담고있는 데이터를 복사해 받는다. ( 값에 의한 전달 : call by value)
void swal(ref int a , ref int b) ; : 원본 변수를 직접 참조한다( 참조에 의한 전달 : call by reference)
다음과 같이도 사용가능
void Divide(int a, int b, ref int quotient, ref int remainder);
그렇지만 c#에서 제공하는 더욱 안전한 방법은?
void Divide(int a, int b, out int quotient, out int remainder);
같은 일을 하지만 메소드를 작성할 때 out 키워드가 붙은 매개변수에 결과를 저장하지 않으면 에러가 나며
읽기는 안되고 쓰기만 가능하다. (오로지 출력전용)
메소드 오버로딩
int Add(int a, int b);
double Add(double a, double b);
코드를 일관성있게 유지하도록 해줌
가변길이 매개변수
같은 형식의 매개변수의 갯수를 유연하게 변할 수 있도록 해줌
int Sum(params int[] args);
매개변수 명명
c++ 에서는 매개변수에 데이터를 할당할 때 순서에 따라 할당했었다.
c# 에서는 명명된 매개변수(Named Parameter) 를 지원한다
메소드 호출 시 매개변수 이름 : 데이터 이런식
ex) void AddTelephoneDir(string name, string phone);
=>AddTelephoneDir(name: "이ㅏ러", phone : "0000-000");
가독성 향상
선택적 매개변수(Optional Parameter)
c++ 과 같다.
기본값을 넣어둘 수 있다.
void Method(int a = 0, int b = 0);
=> Method(); / Method(3,2); / Method(2);
가장 오른쪽부터 차례로 있어야 한다.
사용하지 않는 매개변수를 염두에 두지 않도록 편의를 제공하지만,
매개변수 오버로딩과 같이 쓰이면 큰 혼란에 휩싸일 수 있다.
많은 고민 필요
매개변수 명명을 이용하면 좀더 쉽게 사용가능\
참고 : 뇌를 자극하는 c# 프로그래밍 책