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를 구할때, 리스크 크기를 넘어가지 않도록
방어로직도 있는거보면 대단하다.
'프로그래밍&IT > C#' 카테고리의 다른 글
스레드 동기화를 위한 동기화 객체들 (0) | 2024.09.23 |
---|---|
C# 윈폼에서 사용할 무료 차트 컴포넌트 (1) | 2024.09.03 |
[Visual Studio] 파일 선택하면 솔루션 탐색기에서 자동 이동하는 설정 (0) | 2021.01.03 |
[C#] ServiceController 클래스 관련해서 (0) | 2017.01.08 |
[.Net C#] 열거형식, enum - 여러 상수 모아둘때 등 (0) | 2016.08.13 |