본문 바로가기

프로그래밍&IT/C#

object의 DBNull처리 & List 마지막부터 가져오기

1). DBNull.Value 처리를 쉽게하기위해 object를 확장하는 부분

예전에 투입되었던 프로젝트에서 본 확장 클래스/메서드 소스다.

막상 써보니 유용해서 계속 기억해두려고 한다.

 

매번 DBNull.Value인지 확인해서 Convert를 해주었는데,

이걸쓰니 DBNull.Value를 체크안하고 바로 To<T>를 쓸수가 있었다.

    public static class ExtMethod
    {
    // 1)
        public static T To<T>(this object obj) {
            if(obj is T)
                return (T)obj;

            try {
                if(obj == DBNull.Value)
                    return default(T);
                else
                    return (T)Convert.ChangeType(obj, typeof(T));
            }
            catch {
                return default(T);
            }
        }

2)
        public static IEnumerable<T> GetLastElements<T>(this List<T> source, int count) {
            // 리스트 크기를 넘어가지 않도록 처리
            count = Math.Max(0, Math.Min(count, source.Count));
            for(int i = source.Count - count; i < source.Count; i++) {
                yield return source[i];
            }
        }
        
    }
}

 

2) List<T>의 count만큼 뒤에서 값을 가져오는 확장 메서드

이번에 챗GPT쓰면서,

주식 가격지표관련 C#소스를 확인하는 중에 알게된 메서드

 

count를 구할때, 리스크 크기를 넘어가지 않도록

방어로직도 있는거보면 대단하다.