C# 53

프로퍼티

저번 포스트에서는 C#의 추가적인 기능중 하나인 Interface에 대해 배워보았습니다.Interface는 다중상속을 막는 C#에서 아주 유용하게 사용할 수 있으며, 클래스 간의 결합을 낮추는 역할을 합니다.이번 포스트에서는 Interface에 이은 C#의 기능 중 하나인 프로퍼티에 대해 배워보겠습니다. 프로퍼티는 객체지향의 특징 중 하나인 은닉성과 연관되어 있으며,은닉성에 대한 자세한 정보는 제가 이전에 적어놓은 포스트의 링크로 대체하겠습니다. https://monstrosite.tistory.com/18 객체지향의 프로그래밍의 3요소 - 은닉성상속성 : https://monstrosite.tistory.com/17 객체지향 프로그래밍의 3요소 - 상속성 객체지향 프로그래밍(Object Oriented..

C# 2024.08.31

Interface

C#에서는 다중상속을 금지합니다.그 이유로는 다중 상속 상황에서 이름이 동일한 함수가 존재하는 경우 컴파일러가 함수를 호출할 때어느 함수를 호출해야 하는지 판단할 수 없는 소위 다이아몬드 문제가 발생할 수 있기 때문입니다. 하지만, 다중상속이 되지 않는 상황에서 이런 다중상속의 제약도 해결하면서 설계를 유연하게 하는 방법이 있습니다.그것이 바로 Interface인데 기존의 C++의 추상 클래스와 동일하게 인터페이스의 함수도 반드시 재정의해야 하지만,다중상속의 제약에는 포함되지 않아 원하는 만큼 사용할 수 있습니다. 인터페이스를 사용하면 클래스의 인스턴스를 인터페이스 형으로 사용하거나 클래스 간의 결합을 낮추는 등의 효율적인 작업이 가능합니다. 이러한 특징 때문에 C++ 베이스인 언리얼 엔진에서도 채택한 ..

C# 2024.08.25

Generic

프로젝트를 만들다 보면, 비슷한 형태의 함수나 클래스의 인스턴스가 무수히 많아지게 됩니다.이런 상황에서 설계자는 어떤 방향으로 프로젝트를 구성해야 할까요? 1) object 자료형C#에는 모든 자료형의 부모 격인 object 타입이 존재합니다.따라서 object 타입을 사용하면 모든 자료형을 사용할 수 있습니다. 이때 주의해야 할 것은 var와는 완전히 다른 방식으로 동작한다는 것입니다.var는 C++의 auto 키워드처럼 컴파일러의 추론을 사용하지만, object는 말 그대로 자료형으로서 동작합니다. 그렇다면 object 타입을 사용한 예제를 한번 확인해보겠습니다.  위와 같이 object 타입을 인자로 받는 함수를 Main 함수에서 호출하면다음의 실행결과를 얻을 수 있습니다.  잘 동작하는 것을 확인..

C# 2024.08.25