이것이 제네릭을 사용하여 DB에서 널 값을 읽는 것을 처리하는 안전하고 효율적인 방법입니까?
문제
나는 제네릭을 가지고 놀았으며 DB의 읽기 널 값을 처리하는 데 도움이되는 기능에 대한 피드백이나 제안을 얻을 수 있기를 바랐습니다. 내 주요 관심사는 IF 문에 있습니다. t가 문자열 요소인지 알아낼 수있는 더 좋은 방법이 있습니까? 감사.
public static T CheckNull<T>(object value)
{
if ((value != null) && value.Equals(DBNull.Value))
{
if (object.ReferenceEquals(typeof(T), typeof(String)))
value = string.Empty;
else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
value = false;
else
value = null;
}
return (T)value;
}
해결책
상관없이 T
의 유형, 당신은 다시 떨어질 수 있습니다 default(T)
주어진 유형의 기본값을 제공합니다 (, string.Empty
0
, false
, null
, 등...) :
value = default(T);
편집하다: default(string)
그러나 반환합니다 null
.
다른 팁
다른 원시 데이터 유형도 다루어야합니다.
value = default(T);
이 반환 NULL이 참조 유형 인 경우, 그렇지 않으면 0, False 또는 주어진 유형 T의 적절한 기본값 인 것입니다.
메모: 기본 (문자열)입니다 null
, string.empty가 아닙니다. 당신이 원한다면 String.Empty
, 당신은 이것을 예외로 구현해야합니다.
제휴하지 않습니다 StackOverflow