Всегда есть лучшие практики и тому подобное, но я не знаю, согласен ли я со всем, что все говорили ...
Если я вас правильно понимаю, вы должны перечислить ваш вложенный массив по нескольким причинам и хотели бы инкапсулировать эту функциональность для повторного использования. Есть несколько различных способов сделать это, но вот один из них с использованием linq и один без ... .
List<DateTime[]> changes = new List<DateTime[]>();
changes = PopulateChanges();
// *** As pointed out ForEach this will not change the value in the array, Thanks!***
changes.ForEach(change => change.ToList().ForEach(date => date = DateTime.MinValue));
// this how ever works but is kind of confusing...
changes = changes.Select(change => change.Select(date => DateTime.MinValue).ToArray()).ToList();
//Even that would get old writing it over and over again...
Я бы сделал это так ...
private void ForEachOnNestedDates(List<DateTime[]> list, Func<DateTime, DateTime> method)
{
// Use your code...
for (int i = 0; i < list.Count; i++)
{
for(int j = 0; j < list[i].Length; j++)
{
list[i][j] = method.Invoke(list[i][j]);
}
}
}
это позволит вам повторно использовать это и делать разные вещи для каждого элемента. напр.
//Add a Day to each datetime value
ForEachOnNestedDates(changes, (DateTime date) => date.AddDays(1));
//You also make it even more readable
ForEachOnNextedDates(changes, DoSomethingWithDate);
private DateTime DoSomethingWithDate(DateTime value)
{
}
это будет использоваться для вещи, выполненной с каждым временем даты, в отличие от вещи, выполненной с каждым временем даты ... Это будет немного отличаться.