C#에서 기본 클래스 객체를 파생 클래스 참조로 안전하게 타입캐스팅
C#에서 기본 클래스 개체를 파생 클래스 참조로 직접 캐스팅하는 것은 위험하며 런타임 예외가 발생하는 경우가 많습니다. 이는 파생 클래스 참조가 자체 유형 또는 null의 객체를 기대하기 때문입니다.
예시:
<code class="language-csharp">object o = new object(); string s = (string)o; // This will throw an exception at runtime</code>
이 안전하지 않은 캐스트 이후 파생 클래스 멤버에 액세스하려고 하면 오류가 발생합니다.
<code class="language-csharp">int i = s.Length; // Runtime exception: InvalidCastException</code>
o
변수는 Length
과 같은 파생 클래스 멤버와 호환되지 않는 기본 클래스 개체를 보유합니다.
런타임 오류를 방지하려면 항상 캐스팅하기 전에 개체의 실제 유형을 확인하세요. is
연산자와 패턴 일치는 안전한 대안을 제공합니다.
<code class="language-csharp">object o = new object(); if (o is string str) { int i = str.Length; // Safe access to Length } else { // Handle the case where o is not a string } // Or using pattern matching: if (o is string s2) { int length = s2.Length; }</code>
또는 수업 설계를 재평가해 보세요. 기본 클래스와 파생 클래스 간의 빈번한 캐스팅이 필요한 경우 이는 상속 계층 구조에 결함이 있음을 나타낼 수 있습니다. 이러한 캐스트가 필요하지 않도록 리팩토링하는 것이 더 나은 솔루션인 경우가 많습니다. 해당하는 경우 상속 대신 인터페이스나 구성 사용을 고려해보세요.
위 내용은 C#에서 기본 클래스 개체를 파생 클래스 참조로 안전하게 타입캐스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!