Не используйте какое-либо ключевое слово или аргумент в качестве ввода или скобки для вашей функции. Это очень простое решение:)
Я использовал бы цикл, который похож на это
for(DateTime date = begin; date <= end; date = date.AddDays(1))
{
}
, Набор начинается и заканчивается соответственно
DateTime dateTime = new DateTime(2009, 1, 1);
while(dateTime.Year < 2010)
{
dateTime = dateTime.AddDays(1);
}
Я использовал бы MiscUtil и его дополнительные методы:
foreach(DateTime date in 1.January(2009)
.To(31.December(2009))
.Step(1.Days())
{
Console.WriteLine(date);
}
Установите две переменные:
DateTime lowValue = DateTime.Parse("1/1/2009");
DateTime highValue = DateTime.Parse("12/31/2009");
Затем добавьте день к низкой стоимости, пока это не будет равно highvalue:
while (lowValue <= highValue)
{
//Do stuff here
lowValue = lowValue.AddDays(1);
}
Или что-то как этот.
int day;
for (int i = 1; i<365;i++)
{
day++;
}
Извините, не мог сопротивляться.
DateTime current = DateTime.Parse("1/1/2009");
DateTime nextYear = current.AddYears(1);
do
{
Console.WriteLine(current);
current = current.AddDays(1);
} while (current < nextYear) ;
Другая опция, реализовывая шаблон разработки Итератора:
Это может звучать ненужным, но я в зависимости от того, как Вам используют эту функциональность, можно также реализовать , шаблон разработки .
Итератора Думает на этом. Предположим, что все работает просто великолепно, и Вы скопировать/вставить повсеместно "для" предложения. И внезапно как часть требований, необходимо выполнить итерации всех дней, но пропустить некоторых из них (как в календаре, пропустите праздники, выходные, пользовательские и т.д.)
, необходимо было бы создать "отрезанное" новое и использовать Календарь вместо этого. Затем ищите и замените весь свой for's.
В ООП, это могло быть достигнуто с помощью шаблона Итератора.
От Wikpedia:
В объектно-ориентированном программировании, шаблон Итератора является шаблоном разработки, в котором итераторы используются для доступа к элементам совокупного объекта последовательно , не выставляя его базовое представление . Объект Итератора инкапсулирует внутреннюю структуру того, как повторение происходит.
, Таким образом, идея состоит в том, чтобы использовать конструкцию как это:
DateTime fromDate = DateTime.Parse("1/1/2009");
DateTime toDate = DateTime.Parse("12/31/2009");
// Create an instance of the collection class
DateTimeEnumerator dateTimeRange =
new DateTimeEnumerator( fromDate, toDate );
// Iterate with foreach
foreach (DateTime day in dateTimeRange )
{
System.Console.Write(day + " ");
}
И затем в случае необходимости Вы могли создать подклассы для реализации различных алгоритмов, тот, который использует AddDay (1), другой, который использует AddDay (7) или другой что простой Календарь использования вместо этого. И т.д. и т.д.
идея состоит в том, чтобы понизить связь между объектами.
Снова, это было бы излишеством для большинства случаев, но если повторение формируется релевантный часть системы (скажем, Вы создаете некоторый безотносительно уведомления, для предприятия, и должны придерживаться различной глобализации
, базовое внедрение, конечно, использовало бы для.
public class DateTimeEnumerator : System.Collections.IEnumerable
{
private DateTime begin;
private DateTime end;
public DateTimeEnumerator ( DateTime begin , DateTime end )
{
// probably create a defensive copy here...
this.begin = begin;
this.end = end;
}
public System.Collections.IEnumerator GetEnumerator()
{
for(DateTime date = begin; date < end; date = date.AddDays(1))
{
yield return date;
}
}
}
Просто идея :)