Ответ 1
О, давай, этот кричит, чтобы быть однострочным
public static DateTime Max(DateTime a, DateTime b) {
return a > b ? a : b;
}
Я работаю на С#, используя VisualStudio 2005 в Windows. Я хочу найти максимальную дату между двумя датами.
Предположим, что:
From Date: 10-1-2009//Day-Month-YYYY
To Date : 1-3-2009
Я хочу написать метод, который возвращает, что "To Date" является большим из двух.
О, давай, этот кричит, чтобы быть однострочным
public static DateTime Max(DateTime a, DateTime b) {
return a > b ? a : b;
}
Попробуйте это для размера, не нужно писать новую процедуру Max снова - используйте generics!
public T Max<T>(T value1, T value2) where T:IComparable
{
return value1.CompareTo(value2) > 0 ? value1 : value2;
}
Класс DateTime хранит точки во времени численно как 64-битное целочисленное значение, называемое тиком. Один тик представляет собой сто наносекунд или одну десятую миллионную секунду. В миллисекундах есть 10 000 тиков.
Так как DateTime
- просто числовое значение, вы можете легко сравнить их, как и любые два числа, используя операторы <
или >
.
Вы можете использовать метод Linq to Objects Max
, например:
new [] {date1,date2,date3}.Max();
public static DateTime WhichIsBigger(DateTime first, DateTime second) {
if(first > second) return first;
else return second;
}
Или реальный 1-лайнер:
Func<DateTime, DateTime, DateTime> whichIsBigger = (f, s) => f > s ? f : s;