ASP/ADO.Net C# 실무 과정 자료] 오버로딩과 메소드 서명







ASP/ADO.Net C# 실무 과정 자료] 오버로딩과 메소드 서명



실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


오버로딩과 메소드 서명


■ 메소드 서명(signature)

  - 메소드를 호출하면, 컴파일러는 오버로딩된 메소드 중 하나를 호출하게 된다.


  - 이때, 파라미터 형식, 메소드 이름 등을 보고 메소드를 구별하게 되는데, 이것이 바로 서명이란 개념이다.


  - 서명이 다르다 -> 서로 구별할 수 있다 -> 오버로딩할 수 있다.


■ 서명이 될 수 있는 요소

  - 메소드 명 /파라미터 형식 out ref 키워드

   (주의) 반환값 형식, 파라미터 이름은 포함되지 않는다.


  - 아래의 예에서 굵은 글씨가 서명의 요소

    public static void Write(string format, object[] args);



ASP/ADO.Net C# 실무 과정 자료] 메소드 오버로딩






ASP/ADO.Net C# 실무 과정 자료] 메소드 오버로딩

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


메소드 오버로딩


■ 같은 이름의 메소드가 파라미터의 종류에 따라 다른 방식으로 동작하게 할 수 있다.


■ Console.Write 메소드를 예로 들면 Write(1), Write(“abc”), Write(“{0}”, 1) 등이 일관성은 있지만 다른 방식으로 동작한다.


■ Console.Write의 내부 선언을 보면 다음과 같은 식이다. (더 많은 오버로딩 메소드가 존재한다)

public static void Write();

public static void Write(int value);

public static void Write(string value);

public static void Write(string format, object[] args);



ASP/ADO.Net C# 실무 과정 자료] 가변길이 파라미터 예제 






ASP/ADO.Net C# 실무 과정 자료] 가변길이 파라미터 예제 

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


가변길이 파라미터 예제

(1)


(2)


설명)

public static void PrintInt(params int[] args) 

 ■PrintInt 메소드가 여러 개의 int로 구성된 가변 파라미터를 사용한다는 것을 선언하였다.


PrintInt(1,2,3,4,5);

PrintInt(new int[] {1,2,3,4,5,6,7});

  ■ 두가지 방법이 모두 통용되고 있음을 보여준다.


for(int i=0;i<args.Length;i++)

  ■ PrintInt 메소드 내부에서는 Main으로 부터 넘어온 파라미터들의 list를 마치 int 배열인 것처럼 사용한다. 즉 PrintInt(1,2,3)와 같이 메소드를 호출했지만 실제로는 int [] {1,2,3} 로 인식하는 것이다.




ASP/ADO.Net C# 실무 과정 자료] 가변길이 파라미터 사용






ASP/ADO.Net C# 실무 과정 자료] 가변길이 파라미터 사용

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


가변길이 파라미터 사용


■ 파라미터가 1개 혹은 2개로 정해진 경우가 대부분이지만 Console.WriteLine()과 같이 몇 개의 파라미터가 있을지를 알 수 없는 경우가 있다.


■ Main 메소드 역시 여러 개의 파라미터를 가지는 경우이다.


■ 이럴 경우 params 키워드와 배열을 사용한다. 아래와 같다.

public static void Method(params int[] args)


■ 메소드를 호출 하는 경우, 나열식과 배열식의 두가지의 방법이 모두 가능하다.

Method(1,2,3)

Method( new int[] { 1,2,3 } );


ASP/ADO.Net C# 실무 과정 자료] out에 의한 반환값 전달 예제 






ASP/ADO.Net C# 실무 과정 자료] out에 의한 반환값 전달 예제 

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


out에 의한 반환값 전달 예제


ASP/ADO.Net C# 실무 과정 자료] out 키워드를 이용한 반환






ASP/ADO.Net C# 실무 과정 자료] out 키워드를 이용한 반환

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


out 키워드를 이용한 반환


■ out 키워드는 ref와 비슷한 의미를 가진다. 다만 out은 반환값을 위해 사용하기 편리하게 만들어진 것이다.


■ out은 메소드 내부로 값을 이동시키는 위한 것이 아니기 때문에 미리 초기화 할 필요는 없다. 물론 선언은 되어있어야 한다.


■ out을 통해 전달된 파라미터들은 메소드 내부에서 초기화 되어야 하며, 초기화 된 이후에는 쓰기, 읽기가 자유롭다.


■ 기본적인 사용법은 ref와 거의 같다. 

public static void Swap(out int x, out int y)

Swap(out x, out y);


ASP/ADO.Net C# 실무 과정 자료] 반환값 (Return Value)






ASP/ADO.Net C# 실무 과정 자료] 반환값 (Return Value)

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


반환값 (Return Value)


■ 메소드는 return 명령을 통해 값을 반환한다.



■ 반환 값이 void로 선언되지 않은 모든 메소드는 return 문을 명시해야 한다. 그리고 메소드의 선언된 반환 값과 return하는 반환 값은 같은 형식이어야 한다.



■ return을 통한 반환 값은 단 하나이다. 단 하나의 객체만을 반환할 수 있다.



■ 반환 값이 둘 이상 필요한 경우, ref나 out키워드를 사용하여 문제를 해결한다.



ASP/ADO.Net C# 실무 과정 자료] 참조 전달시 유의점






ASP/ADO.Net C# 실무 과정 자료] 참조 전달시 유의점

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


참조 전달시 유의점


■ 파라미터로 전달할 변수는 반드시 초기화 해야 한다. (C#에서는 각 변수를 초기화 하기 전에는 메모리를 할당하지 않는다는 것을 명심한다.)



■ 참조 전달의 경우, 메소드 내부에서 원본 데이터에 대한 조작실수가 일어날 가능성이 있으므로 주의가 필요하다. 이를 side effect(부작용)이라 부른다.



■ 만약 반환값의 확장을 위해서 참조를 사용할 생각이라면 뒤에서 설명할 out 키워드를 사용한다. out 키워드의 사용은 초기화를 요구하지 않는다.



+ Recent posts