增加数组内的计数器

时间:2013-11-12 08:29:46

标签: c# arrays

我想增加(使用计数器)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。

4 个答案:

答案 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"));

它将从counterDaysDateTime.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"));
}