> 백엔드 개발 > C++ > C# 개체가 Null 허용 값 유형인지 어떻게 확인할 수 있나요?

C# 개체가 Null 허용 값 유형인지 어떻게 확인할 수 있나요?

Barbara Streisand
풀어 주다: 2025-01-13 12:11:44
원래의
395명이 탐색했습니다.

How Can I Check if a C# Object is a Nullable Value Type?

C# 객체 null 허용 여부 검사

C#에서는 null을 허용하는 개체와 null을 허용하지 않는 개체를 구별하는 것이 중요합니다. 이 문서에서는 참조 유형이 아닌 값 유형에 중점을 두고 개체가 null을 허용하는지 여부를 확인하는 방법에 중점을 둡니다.

구현 방법:

다음 코드 조각은 객체가 null 허용 값 유형인지 확인하는 한 가지 방법을 보여줍니다.

<code class="language-csharp">bool IsNullableValueType(object o)
{
    if (o == null) return true; // 显而易见的情况
    Type type = o.GetType(); // 修正此处,使用 o.GetType() 获取对象的实际类型
    if (!type.IsValueType) return true; // 引用类型
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // 值类型
}</code>
로그인 후 복사

코드 설명:

이 방법은 세 가지 상황을 확인합니다.

  • Null 개체: o가 null이면 그 자체가 null이 가능합니다.
  • 참조 유형: o가 참조 유형(값 유형 아님)인 경우 null 허용으로 간주됩니다.
  • Nullable 값 유형: Nullable.GetUnderlyingType 메서드는 o 유형이 Nullable<T> 유형인지 확인합니다. o가 null이 아닌 유형을 반환하는 경우 null 허용 값 유형입니다.

박스형 개체 처리:

그러나 o가 박스형 값 유형인 경우 이 방법이 실패할 수 있습니다. 이 문제는 제네릭을 사용하여 극복할 수 있습니다.

<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>
로그인 후 복사

제네릭을 사용하면 이 수정된 메서드는 전달된 개체에서 T 유형을 추론할 수 있으며, 이는 o가 boxed인 경우에도 작동합니다.

추가 자료:

C#의 null 허용 유형에 대한 자세한 내용은 Microsoft 설명서를 참조하세요. https://www.php.cn/link/55298ec38b13c613ce8ffe0f1d928ed2

위 내용은 C# 개체가 Null 허용 값 유형인지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿