TimeSpan은 이런 점에서 대단히 훌륭하다. 호출 함수가 TimeSpan을 매개변수로 받지 않더라도 TimeSpan 말고 다른 방식으로 기간을 정의할 이유가 없다.
public static readonly TimeSpan cacheExpiration = TimeSpan.FromMinutes(5);
얼마나 보기 좋은가! 선언된 변수가 기간이라는 것을 바로 알 수 있다. 더 좋은 점은 다른 곳에서 그것의 단위를 알 필요가 없다는 것이다. TimeSpan을 받는 모든 함수에 전달하기만 하면 된다. 함수가 특정 단위(예를 들어 분 단위)를 정수로 받는다면 다음과 같이 호출할 수 있다.
cache.Add(key, value, cacheExpiration.TotalMinutes);
기간을 분 단위로 변환한다. 훌륭하다!
이와 유사하게 유용한 다른 타입도 많다. 예를 들어 DateTimeOffset은 DateTime과 같이 특정 날짜나 시간을 표현하는 동시에 시간대 정보도 포함한다. 이를 이용하면 컴퓨터나 서버의 표준 시간대 정보가 갑자기 변경되더라도 데이터가 손실되는 일을 막을 수 있다. 사실 DateTime보다 DateTimeOffset을 사용하게 될 것이다. DateTime으로 쉽게 변환할 수 있기 때문이다. 또한, 연산자 오버로드 덕분에 TimeSpan이나 DateTimeOffset에 산술 연산자를 함께 사용할 수 있다.