我想增加(使用计数器)C#数组的值。但是我总是得到一个
Index out of bounds error.
这是我的代码。我试图在datesStrings数组中增加计数器的下一个位置,但错误会停止它。我应该如何增加“i”的值?
string[] datesStrings = { "" };
int i = 0;
if (counterDays.DayOfWeek.ToString() == "Monday")
{
datesStrings[i] = counterDays.ToString("yyyy-MM-dd");
i++;
}
else
{
counterDays = counterDays.AddDays(1);
i++;
}
有什么建议吗? TIA。
答案 0 :(得分:4)
这是因为您的数组长度为1个元素,更改为List<string>();
List<string> datesStrings = new List<string>();
if (counterDays.DayOfWeek.ToString() == "Monday")
{
datesStrings.Add(counterDays.ToString("yyyy-MM-dd"));
}
编辑:
创建方法:
public IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
{
for(var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
yield return day;
}
并使用它
var mondaysStrings = EachDay(counterDays, DateTime)
.Where(x=>x.DayOfWeek==DayOfWeek.Monday)
.Select(x=>x.ToString("yyyy-MM-dd"));
它将从counterDays
到DateTime.Now
的日期范围内选择所有星期一,您可以将日期范围更改为您想要的任何日期
答案 1 :(得分:0)
您只有1(0)位置:
string[] datesStrings = { "" };
你想如何继续前进到1,2,3 ......?
答案 2 :(得分:0)
在使用之前必须指定字符串数组的长度, 像这样
string[] datesString = new string[10]; // whatever the size of array you want to create.
然后在代码中实现您的逻辑。它会起作用。
答案 3 :(得分:0)
我不确定你究竟是否需要,但这是最优雅的方法
//Create string list
List<string> datesStrings = new List<string>();
//Find all date items with Monday
IEnumerable<DateTime> foundValues = counterDays.Where(result => result.DayOfWeek == DayOfWeek.Monday);
//Add found dates string representation to list
foreach(DateTime value in foundValues)
{
datesStrings.Add(value.ToString("yyyy-MM-dd"));
}