【发布时间】:2019-06-04 20:17:22
【问题描述】:
当我尝试从 DateTime 格式 ("mm/dd/yyyy hh:mm:ss xx") 并将其分配给List / ArrayList。
for(int i = 0; i < elementCounter; i++)
{
String stringDate = Convert.ToString(DatumPocetka[i]);
DPGodina[i] = stringDate.Substring(stringDate.Length - 16, 4);
}
DatumPocetka 是一个 ArrayList,其字符串类型值是我前面提到的 DateTime 格式。
我必须从字符串后面计算起始字符。当我从头开始计算时,我不知道年份开始的索引,因为天数和月份可以是个位数和两位数。从后面计算它更容易,因为字符串的时间部分保持静态。 ("mm/dd/yyyy hh:mm:ss xx") 这部分字符串总是有 16 个字符,所以我将长度减去 16 .
甚至 Visual Studio 都说 stringDate.Length 等于 21,但我仍然在 DPGodina[i] = stringDate.Substring(stringDate.Length - 16, 4); 行上收到 ArgumentOutOfRangeException。
我曾尝试使用 name.Year.ToString(); 对 ListDateTime> 执行此操作,但这也不起作用。
【问题讨论】:
-
它们不在范围内。简单的。遇到此异常时
stringDate的值是多少? -
使用
DatumPocetka[i].Year -
...I'm pretty sure the arguments are in range知识的幻觉是一件危险的事情。调试您的代码,以确定发生了什么以及在哪里出了问题:Navigating through Code using the Step Debugger -
问题:您是否预先填写了 ArrayList 或 List?我怀疑有 0 个元素,所以您正在尝试使用超出范围的索引。当与数组一起使用时,您演示的代码对我来说效果很好。
-
参见“它如何应用于 List
?”下的 this answer