본문 바로가기
반응형

프로그래밍/Effective C#15

Effective C# Item 3 : 캐스트보다는 is, as가 좋다 캐스트보다는 is, as가 좋다 C#은 정적 타이핑을 수행하는 언어다. 따라서 코드 작성시에 타입 불일치가 발생하면 컴파일러가 걸러주기 때문에 런타임에 타입 검사를 자주 수행할 필요가 없다. 하지만 간혹 런타임에 반드시 타입을 확인해야 하는 경우도 있다. C#의 경우 .NET Framework에서 정의해둔 메서드를 원형에 따라 object타입의 인자를 취하도록 메서드를 정의해야 하는 경우가 간혹 있다. 통상 이렇게 전달된 매개변수는 다른 클래스나 인터페이스로 형변환을 수행한 후 사용하게 된다. C#에서 형변환을 수행하는 방법에는 as 연산자를 사용하는 방법과 컴파일러의 캐스트 연산자 구문을 사용하는 두 가지 방법이 있다. 더 방어적인 코드를 작성하려는 경우에는 우선 is 연산자로 형변환이 가능한지를 확인.. 2023. 9. 26.
Effective C# Item 7 : 델리게이트를 이용하여 콜백을 표현하라 콜백(CallBack)이란? 프로그래머는 함수를 호출할 때 콜(Call)을 하여 호출한다. 콜백(CallBack)은 콜의 반대되는 개념으로 함수가 언제 실행될지에 대한 권한을 전적으로 위임한다. 기능만을 구현한 채 전달하고 언제 실행될지는 모른다. C#은 이러한 콜백 함수를 구현하기 위해 Delegate 문법을 제공한다. 델리게이트를 이용하여 콜백을 표현하라 콜백은 서버가 클라이언트에게 비동기적으로 피드백을 주기 위해서 주로 사용하는 방법이다. 이를 위해 멀티스레딩 기술도 사용되고, 동기적으로 상태를 갱신하는 기법도 활용된다. 콜백은 C#에서 델리게이트를 이용하여 표현된다. 델리게이트를 이용하면 타입 안정적인 콜백을 정의할 수 있다. 대부분의 경우에 델리게이트는 event와 함께 사용되지만 반드시 그래야.. 2023. 9. 26.
Effective C# Item 22 : 공변성과 반공변성을 지원하라 공변성(Convariance)과 반공변성(Contravariance)을 지원하라 타입의 가변성(Variance), 즉 공변(Covariance)과 반공변(Contravariance)은 특정 타입의 객체를 다른 타입의 객체로 변환할 수 있는 성격을 일컫는다. 이러한 변환을 지원하려면 제네릭 인터페이스나 델리게이트의 정의 부분에 제네릭 공변/반공변을 지원한다는 의미의 데코레이터(decorator)를 추가해야 한다. 공변/반공변을 지원하면 우리가 개발하는 API를 더 다양하고 안전하게 사용할 수 있다. 가변성의 반대는 불변성(Invariance)이라고 한다. 타입의 공변성은 많은 개발자가 접하는 문제지만 이를 정확히 이해하는 사람은 많지 않다. 공변과 반공변이란 타입 매개변수로 주어지는 타입들이 상호 호환 가.. 2023. 6. 22.