본문 바로가기

언어/C#

(3)
[C#] 공변성과 반공변성이란? 공변성과 반공변성 공변성과 반공변성 어떤 의미이고 어떻게 쓰는 것이 좋을까? 개요 사실 공변성과 반공변성을 통칭 가변성이라고 한다. 그리고 이와 반대되는 의미로는 불변성이 있다. 가변성(Variance) : 특정 타입의 객체를 다른 타입의 객체로 변환할 수 있는 성격을 말한다. 공변성(Covariant) : X -> Y가 가능할 때 C가 C -> C로 가능하다면 이는 공변이다. 반공변성(Contravariant) : X -> Y가 가능할 때 C가 C -> C로 사용 가능하다면 이는 반공변이다. 불변성(Invariant) : X -> Y가 가능하더라도 C는 C로만 사용할 수 있다. 기본적으로 제네릭은 불변이다. 좀 더 상세히 설명하기 위해서 아래와 같은 다형성을 가진 환경이 있다고 가정해보자. class ..
[C#] 동기적 재시도(Retry) 함수 구현하기 많은 내용은 포함되지 않았고 일단 필요한 몇번 재시도할 것인지, 익셉션 발생이 핸들러와, 실패시 핸들러를 모두 넣었다. (옵셔널 파라미터라는게 정말 편하다.)
[C#] Thread로 Timeout 구현하기 C#에서 Thread로 timeout구현을 해보았다. Join을 호출하면 파라미터로 주어진 시간동안 현재 스레드가 정지하게 되므로 유의하자. (Join을 호출시 그 시간이 넘었더라고 해도 대상 스레드는 abort되지 않는다.) class로 만들어 쓰자면 이정도가 될 듯 하다.