>백엔드 개발 >C++ >C#에서 유형이 Null 가능 여부를 확실하게 확인하려면 어떻게 해야 합니까?

C#에서 유형이 Null 가능 여부를 확실하게 확인하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-13 11:47:42880검색

How Can I Reliably Determine if a Type is Nullable in C#?

C# 유형이 null을 허용하는지 여부를 안정적으로 확인하는 향상된 방법

객체가 Null 허용 유형으로 명시적으로 선언되었는지 확인하려면 해당 기본 유형을 알아야 하고 해당 객체가 Null 허용 값 유형인지 확인해야 합니다. 이는 값 변환 및 반영을 사용하여 달성할 수 있지만 이 접근 방식은 null 허용 참조 유형을 제외하므로 포괄적이지 않습니다.

보다 강력한 솔루션은 다음과 같이 제네릭과 유형 추론을 사용하여 특정 유형의 null 허용 여부를 결정하는 것입니다.

<code class="language-csharp">static bool IsNullable<T>(T obj)
{
    if (obj == null) return true; // 明显可空
    Type type = typeof(T);
    if (!type.IsValueType) return true; // 引用类型
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // 值类型
}</code>

이 메서드는 Nullable.GetUnderlyingType 메서드를 활용하여 제공된 유형이 Nullable<T> 유형인지 확인합니다. 기본 유형을 결정함으로써 null 허용 값 유형과 null 불가능 값 유형을 정확하게 구별할 수 있습니다.

이 방법은 일반 유형으로 작업할 때 매우 효율적이지만, 박스형 값 유형으로 작업할 때는 효율성이 떨어질 수 있습니다. 값이 객체에 박싱된 경우 기본 유형을 식별하기가 더 어렵습니다.

널 입력 가능 유형 식별에 대한 자세한 내용은 다음을 참조하세요.

위 내용은 C#에서 유형이 Null 가능 여부를 확실하게 확인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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