Study/TIL(Today I Learned)

24.07.19 C#

에린_1 2024. 7. 19. 23:23
728x90

C#

일반화 프로그래밍(Generic Programming)

  • 특수한 개념으로부터 공통된 개념을 찾아 묶는 것을 일반화(Generalization)라고 한다.
  • 데이터 형식을 일반화 한다.

일반화 메소드(Generic Method)

  • 데이터 형식을 일반화한 메소드다.
  • 일반 메소드와 선언 문법이 대부분 비슷하다. 다만 일반화할 형식이 들어가는 자리에 구체적인 형식의 이름 대신 형식 매개변수(type parameter)가 들어간다.
    • 한정자 반환형식 메소드 이름<형식 매개변수> (매개변수 목록)

일반화 클래스

  • class 클래스이름(형식 매개변수)

예외 처리하기(Exception Handing)

try-catch

  • try절의 코드 블록에는 예외가 일어나지 않을 경우에 실행되어야 할 코드들이 들어가고, catch절에는 예외가 발생했을 때 처리 코드가 들어간다.

System.Exception 클래스

  • C#에서 모든 예외 클래스는 반드시 이 클래스로부터 상속 받아야 한다.

예외 던지기

  • 예외는 throw 문을 이용해서 던진다.

try~catch와 finally

  • 자신이 소속된 try절이 실행된다면 finally절은 어떤 경우라도 실행된다. 심지어 try절 안에서 return문이나 throw문이 사용되더라도 finally절은 실행된다.

대리자와 이벤트(Delegate & Event)

  • C#에서 콜백을 맡아 실행하는 일을 ‘대리자’가 담당한다.
  • 대리자는 메소드에 대한 참조이다. 대리자에 메소드의 주소를 할당한 후 대리자를 호출하면 이 대리자가 메소드를 호출해준다.
  • delegate 키워드를 이용해서 선언한다.
  • 대리자는 인스턴스가 아닌 형식(type)이다.
  • 왜, 언제 사용하는지
    • 값이 아닌 코드 자체를 매개변수에 넘기고 싶을 때이다.

대리자 체인

  • 대리자 하나가 메소드 여러 개를 동시에 참조할 수 있다.
  • += 연산자를 이용해 결합할 수 있다. 결합해놓은 대리자는 한 번만 호출하면 자신이 참조하고 있는 메소드를 모두 호출한다.
  • 여러 개의 콜백을 동시에 호출해야 할 때 유용하다.

익명 메소드(Anonymous Method)

  • 이름이 없는 메소드를 말한다. 선언한 대리자의 인스턴스를 만들고 이 인스턴스가 메소드의 구현이 담겨있는 코드 블록을 참조한다. 대리자의 인스턴스를 호출하면 참조하던 코드를 실행한다.
  • 익명 메소드는 자신을 참조할 대리자의 형식과 동일한 형식으로 선언되어야 한다.
  • 대리자가 참조할 메소드를 넘겨야 할 일이 생겼는데, 이 메소드가 두 번 다시 사용할 일이 없다고 판단되면 익명 메소드를 사용한다.

이벤트 : 객체에 일어난 사건 알리기

  • 어떤 일이 생겼을 때 이를 알려주는 객체를 만들 때 사용한다.
  • 과정
    1. 대리자를 선언한다.
    2. 클래스 내에 1에서 선언한 대리자의 인스턴스를 event 한정자로 수식해서 선언한다.
    3. 이벤트 핸들러를 작성한다. 이벤트 핸들러는 1에서 선언한 대리자와 일치하는 메소드면 된다.
    4. 클래스의 인스턴스를 생성하고 이 객체의 이벤트에 3에서 작성한 이벤트 핸들러를 등록한다
    5. 이벤트가 발생하면 이벤트 핸들러가 호출된다

대리자와 이벤트

  • 이벤트를 외부에서 직접 사용이 불가능하다.
  • 대리자의 경우 public이나 internal로 수식되어 있으면 클래스의 외부에서 호출 가능하다.
728x90

'Study > TIL(Today I Learned)' 카테고리의 다른 글

24.07.23 RedMine  (0) 2024.07.23
24.07.22 SVN  (0) 2024.07.22
24.07.18 C#  (0) 2024.07.18
24.07.17 C#  (0) 2024.07.17
24.07.16 C#  (0) 2024.07.16