티스토리 뷰

ComComComCom/C#

메소드

몰라아 2017. 9. 2. 22:55

메소드 : 함수

메소드를 호출한다 : 함수를 호출한다.

한정자 반환형식 메소드명 (매개변수)

{ 열린스코프

} 닫힌스코프

 

일을 처리하는 방법 방식 정도

 

각 객체는 다신만의 속성(데이터) 기능(메소드) 가짐

클래스안에서 선언된다.

클래스: 객체를 위한 청사진

 

 

매개변수  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# 프로그래밍 책

 

 

댓글