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>
코드 설명:
이 방법은 세 가지 상황을 확인합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!