ASP/ADO.Net C# 실무 과정 자료] 위임의사용 (1)






ASP/ADO.Net C# 실무 과정 자료] 위임의사용 (1)

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

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



위임의사용 (1)


ASP/ADO.Net C# 실무 과정 자료] 위임의 생성






ASP/ADO.Net C# 실무 과정 자료] 위임의 생성

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

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


위임의 생성


Public delegate void Simple(int x);

■ 위와 같이 선언된 위임은 다음 메소드들을 위임받을 수 있다.

public static void M1(int x); // static 도 상관없다.

public void Method1(int z);


■ 첫줄과 같은 위임의 실제 생성은 다음과 같이 한다. (인스턴스 생성과 비슷하다.)

Simple a = new Simple(Method1);

Simple a = new Simple(Class1.Method1);

Simple a = new Simple(Object1.Method1);



ASP/ADO.Net C# 실무 과정 자료] 위임 (Delegate)






ASP/ADO.Net C# 실무 과정 자료] 위임 (Delegate)

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

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


위임 (Delegate)


■ C#에서는 오브젝트의 메소드를 다른 이름으로 위임할 수 있는 방법을 제공한다.



■ 이 위임은, C/C++ 에서 사용하는 함수 포인터와 같은 역할을 하게 한다.



■ 선언된 위임은 동일한 파라미터와 반환형을 가지는 모든 메소드로 부터 위임을 받을 수 있다.



■ 위임 선언은 다음과 같다


public delegate 반환값형식 위임받은측의이름(파라미터 형식)

예) public delegate int DelegateName(int a, string b)


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






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

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

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


메소드 오버로딩 예제


(1)


(2)

설명 )

■ Print란 이름의 메소드 3개가 정의되었다.

1) public static void PrintStar()

2) public static void PrintStar(int value)

3) public static void PrintStar(int value1, int value2)

: 각 오버로딩 메소드는 서로 다른 파라미터 형식을 가지고 있기 때문에 다른 서명을 가지고. Main에서 PrintStar를 호출할 때, 그 파라미터의 형식에 따라 서로 다른 메소드가 호출된다.



■ 만약 public static int PrintStar(int value) 메소드가 존재한다면 2)와 충돌할 것이다.



■ 만약 public static void PrintStar(ref int value1)메소드가 존재한다면 이것은 새로운 메소드 서명이 되며 오버로딩 될 수 있다.



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 } );


+ Recent posts