새로 생성한 스크립트
- Test_Exception : 새로운 오류 메세지 출력 함수 생성 / when 사용해서 같은 이름 다른 조건의 오류메세지를 출력할 수 있다.
- Test_Nullable : 값 형식을 ?를 사용하는 null 가능 연산으로 바꾼다 / ??인 null 변합 연산자 사용 / 널 가능 연산 확인 출력 / 박싱 언박싱 선언 / 캐스팅 가능한지 확인하는 GetUnderlyingType 함수 사용 / 함수 선언 방법 3가지(함수 하나 만들어서 변수에 넣고 실행, 함수 내부에 함수를 생성한 다음 그 함수를 변수에 넣고 실행, 식 본문 정의로 함수 내부에 함수를 생성한 다음 변수에 넣고 실행)
- Test_Delegate : 델리게이트 사용법 3가지(지역변수 사용, 멤버변수 사용, 다른 호출법)
- Test_Delegate1 : 정렬 구현을 델리게이트로 활용하는 법(버블 정렬)
- Test_Event : 델리게이트와 이벤트 비교 구현
- Test_Event2 : 이벤트에 add블록 remove블록 사용해서 이벤트 실행 중 추가적인 작업 넣기
기억 안나는 이론
- 핸들링이 뭐하는 용어인가
- 오늘 inner function 했다는데 뭔지 기억이 안남(찾아서 정리해라)
기타
- 스택 오버플로우 에러는 대부분 재귀함수가 발생해서 자기 자신이 호출되는 문제로 발생한다.
값 형식 널 허용 연산
- 값형식에 ?를 붙이면 null 가능 연산으로 바꿀 수 있다.
- 이렇게 하면 참조형식으로 바뀌기 때문에 '박싱'이 발생한다.
int? b = null;
?? Null 병합 연산자
int? c = 20;
int d = c ?? -1; //널 병합 연산자. / 리턴 자료형이 셋 다 똑같아야한다. / c가 널이 c값을 넣고 널이라면 -1을 넣으라는 연산이다.
print($"d = {d}");
int? e = null;
int f = e ?? -1;
print($"f = {f}");
- c가 널이 c값을 넣고 널이라면 -1을 넣으라는 연산이다.
델리게이트
- 델리게이트의 사용법 : 함수를 변수처럼 사용한다.
- 콜백용이다.
- 어떤 상황이 오면 이 함수를 실행시켜줘 같은 역할이다.
- 뭐 클릭되었으니까 내가 어떤 함수를 호출해줄게 같은 역할이
- 위의 상황들이 ‘콜백;이다.
- 변수로 할당이 되는것이기 때문에 인터페이스에서 사용 불가능하다.
이벤트
- 델리게이션을 래핑 했다고 생각하면 된다.
- 자기 스스로 콜을 하고 외부에서 콜을 하지는 못한다.
- 델리게이트는 외부에서 콜을 할 수 있다.
- 이벤트는 내부에서 필요에 의해서만 콜이 가능하다.
- 얘 자체는 인터페이스에서 수정해서 사용이 가능하다.
- 델리게이트는 +=를 써서 추가만 가능하지만, 이벤트는 +=에서 추가할때 또 다른 무언가를 추가할 수 있다.
- 제네릭을 넣어 이벤트를 추가하고 싶을때 EventHandler<타입>을 추가한다.
- 이렇게 만든 핸들러에 이벤트를 추가해줄때 add를 넣어 또 다른 추가가 가능하다.
- 이벤트를 사용하는 상황 : 5교시 9분 녹음
구독과 발행
- 나중에 더 나아가면 서비스 중개자 패턴이라든가 옵저버 패턴을 쓸때도 사용한다.
옵저버 패턴
- 예. 몬스터의 객체가 생성되면 옵저버에 등록
- 옵저버에 함수를 등록 ⇒ 일정 시간마다 관찰대상을 살핀다.
- 사망했다면 상태가 바뀐것이니 이벤트를 콜한다.
- 추가한 함수를 서버에 전송한다.
- 옵저버가 받는 2가지 : ‘감시할 대상’과 감시 대상의 ‘바뀐 상황’ 을 받는다.