我正在在在线IDE上进行编码,该在线IDE不会揭示程序输入或stdout输出,在此特定情况下(输入太大(。
将file
视为任意字符串:
if (!string.IsNullOrEmpty(file))
{
string[] splitted = file.Split('.');
if (splitted.Length > 0)
{
string Test = splitted[1];
}
}
上面的代码如何返回此错误:
UNHANDLED EXCEPTION: System.IndexOutOfRangeException: ~message masked~
at Solution.Solution.Main (System.String[] args) [0x000e4] in solution.cs:6
行号总是在我尝试访问splitted[1]
的任何地方。这没有任何意义:如果splitted.Length > 0
,则存在splitted[1]
。
这是在线IDE的错误吗?或者是否有任何条件,c#string []可以是lenght> 0,并在读取其值时,在[1]?
您正在检查数组是否长于0,然后尝试在数组中引用 second 元素。如果长度为1,那是错误。
如果您始终需要第二个元素,请检查数组至少有两个元素:
if (splitted.Length > 1)
另外,如果您要访问 first 元素:
string Test = splitted[0];
在C#中,数组索引从0
开始。看起来您正在尝试访问splitted
中的第一个元素的代码string Test = splitted[1];
,但是由于索引开始于0
,因此索引1
中的元素将是第二个。
您想将其更改为string Test = splitted[0];
c#中的数组总是开始用0索引。
c#使用基于零的索引。拆分[0]可以保证存在于您的条件中,因为这是数组中的第一个元素。分裂[1]是数组中的第二个元素。