>백엔드 개발 >C++ >C#에서 기본 클래스 개체를 파생 클래스 참조로 안전하게 타입캐스트하는 방법은 무엇입니까?

C#에서 기본 클래스 개체를 파생 클래스 참조로 안전하게 타입캐스트하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-18 12:18:09781검색

How to Safely Typecast Base Class Objects to Derived Class References in C#?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.