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>
이 방법은 객체 유형을 평가합니다.
Nullable.GetUnderlyingType
에 의해 결정됨) 개체는 null을 허용합니다. 귀하의 예에서 bc.myBool
은 null을 허용하지 않는 bool
값을 나타내며 obj
은 Nullable<bool>
의 인스턴스가 아닙니다. 이 상황을 처리하려면 IsNullableValueType(bc.myBool)
가 true
로 평가되는 경우에만 obj
주위에 nullable 래퍼를 만듭니다.
코드 개선 지침: 원본 코드의 Type type = typeof(T);
에 T
이 정의되어 있지 않아 오류가 있습니다. 판정용 객체의 런타임 타입을 이용하여 Type type = o.GetType();
으로 수정하였습니다.
위 내용은 C#의 값 유형이 Null을 허용하는지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!