본문 바로가기
반응형

Override2

C# virtual 키워드 virtual 키워드란? virtual 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언을 수정하고 파생 클래스에서 재정의하도록 허용하는 데 사용된다. 예를 들어 이 메서드는 이를 상속하는 모든 클래스에서 재정의 할 수 있다. virtual - 가상함수. 구현부가 필요하다. 상속받은 쪽에서 무조건 구현하지 않아도 된다. abstract - 순가상함수. 상속받은 쪽에서 무조건 구현되어야 한다. public class base { // virtual은 base클래스에서 정의되어야 한다. 정의하지 않으면 error! public virtual double Area() { return x * y; } // abstract는 base클래스에서 정의하지 않아도 된다. public abstract bool IsVal.. 2023. 7. 5.
C# Equals()과 GetHashCode()를 함께 재정의 해야하는 이유 우리가 맞이하는 상황 프로그래밍을 하다보면 하나 이상의 필드를 Key값으로 설정하여 비교하게 되는 경우가 생기게 됩니다. 그리고 평소처럼 분명 같은 키값을 가진 객체를 ContainsKey() 함수로 비교하면 일치하지 않는다고 나올겁니다. hash 값을 사용하는 Collection(HashTable, Dictionary, ConcurrentDictionary)에서 ContainsKey로 실행하면 우선 GetHashCode() 메서드를 비교하고 그 다음에 Equals() 메서드를 실행합니다. 아무리 Equals() 메서드를 열심히 변경해도 그 앞쪽에서 비교가 일어나서 메서드가 실행되지 않습니다. 이 문제를 해결하기 위하여 하나 이상의 필드를 Key값으로 비교하기 위해서는 해당 클래스의 Equals 함수와 .. 2023. 3. 23.