이것이 제네릭을 사용하여 DB에서 널 값을 읽는 것을 처리하는 안전하고 효율적인 방법입니까?

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

문제

나는 제네릭을 가지고 놀았으며 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, 당신은 이것을 예외로 구현해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top