일반화에서의 형식 매개 변수 제약
일반화의 형색 매개 변수는 모든 형식에 대응 된다.
그렇기에 특정 조건을 갖춘 자료형에만 대응되는 매개변수가 필요한 경우도 있을 수 있다.
제약 조건 걸기
1. where T : struct
- T는 값 형식이어야 한다
2. where T : class
- T는 참조 형식이어야 한다.
3. where T : new()
- T는 반드시 매개 변수가 없는 생성자를 가지고 있어야한다
4. where T : 기반클래스
- T는 기반 클래스의 파생 클래스여야 한다.
5. where T : 인터페이스
- T는 인터페이스여야 하고, 명시한 인터페이스를 반드시 구현해야한다.
6. where : U
- T는 또 다른 형식 매개 변수 U로부터 상속받는 클래스여야 한다.
일반화 컬렉션
ArrayList => List
HashTable => Dictionary<T_key, T_Value>
Queue => Queue
Stack => Stack
LinkedList(나중에 설명)
비주얼 스튜디오 디버깅 툴
F10이나 F11로 시작
F10 은 기본적으로 세미콜론 ; 실행하며 체크
F11 은 좀 더 세밀한 단위로 실행하며 체크
F9로 브레이크 포인트 (실행 시 이 부분에서 멈추며 디버그 모드 진입)
예외 처리
예외 처리란 프로그래머가 생각하는 시나리오에서 벗어나는 사건을 예외라고 하며
이 예외가 프로그램의 오류나 다운으로 이어지지 않도록 적절하게 처리하는 구문을 말한다.
예외 처리를 하는 이유는 자신의 프로그램을 견고하게 만드는데 도움을 주기 위해서이다.
견고한 프로그램이란 오류가 있더라도 프로그램이 강제 종료되는 등의 사태가 벌어지지 않고 실행이 이어지는 프로그램이다.
try ~ catch, throw, finaly
try
{
//do something...
(throw ....;)
}
catch {예외 객체1}
{
//예외 처리
}
....
finaly
{
//최종적인 명령
//예외 발생 O / 예외 발생 X 두 상황 모두 실행됨
}
델리게이트
delegate 대리자, 대리인, 대표자
델리게이트는 명령 사용자(코더)가 직접 명령을 호출하지 않고
예약에 의해서 대신 명령을 호출하게 하는 키워드이다.
델리게이트는 함수에 의한 참조라고 할 수 있다.
델리게이트를 호출하면 델리게이트가 참조하고 있는 함수를 호출한다.
델리게이트는 직접 기능을 가지고 있지는 않지만 기능을 가진 함수를 참조하고 있는 반환형 값이다.
값이 아닌 코드(함수)자체를 매개변수로 넘기고 싶은 경우 자주 사용한다.
문법
한정자 delegate 반환형 델리게이트이름(매개변수....)
[과제1]
두 개의 정수를 덧셈하여 결과를 출력하는 함수
두 개의 정수를 뺄셈하여 결과를 출력하는 함수
두 개의 정수를 곱셈하여 결과를 출력하는 함수
두 개의 정수를 나눗셈하여 결과를 출력하는 함수
두 개의 정수를 나머지 연산하여 결과를 출력하는 함수
결과화면
1. 덧셈
2. 뺄셈
3. 곱셈
4. 나눗셈
5. 종료
어떤 연산을 하시겠습니까? :
좌항의 값은? (1~1000) :
우항의 값은? (1~1000) :
(덧셈)+ ## = #### 입니다.
(뺄셈)
- ## = #### 입니다.
(곱셈)
* ## =
(나눗셈)
/ ## = 몫 : ## ... 나머지