>백엔드 개발 >C++ >C#의 값 유형이 Null을 허용하는지 어떻게 확인할 수 있나요?

C#의 값 유형이 Null을 허용하는지 어떻게 확인할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2025-01-13 11:58:42450검색

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

null 허용 값 유형 확인

객체의 null 허용 여부를 결정하는 것은 값 유형을 다룰 때 흔히 발생하는 문제입니다. 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인 경우 null이 허용되는 것으로 간주됩니다.
  • 값 유형이 아닌 참조 유형인 경우에도 객체는 null을 허용합니다.
  • 기본 유형이 null을 허용하는 경우(Nullable.GetUnderlyingType에 의해 결정됨) 개체는 null을 허용합니다.
  • 그렇지 않으면 null을 허용하지 않는 값 유형입니다.

귀하의 예에서 bc.myBool은 null을 허용하지 않는 bool 값을 나타내며 objNullable<bool>의 인스턴스가 아닙니다. 이 상황을 처리하려면 IsNullableValueType(bc.myBool)true로 평가되는 경우에만 obj 주위에 nullable 래퍼를 만듭니다.

코드 개선 지침: 원본 코드의 Type type = typeof(T);T이 정의되어 있지 않아 오류가 있습니다. 판정용 객체의 런타임 타입을 이용하여 Type type = o.GetType();으로 수정하였습니다.

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

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