Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有数组的IndexOutOfRangeException.Length>;读取数组[1]时为0_C# - Fatal编程技术网

C# 带有数组的IndexOutOfRangeException.Length>;读取数组[1]时为0

C# 带有数组的IndexOutOfRangeException.Length>;读取数组[1]时为0,c#,C#,我在一个在线IDE上编码,它既不公开程序输入,也不公开标准输出,在这种特殊情况下(输入太大) 将文件视为任意字符串: if (!string.IsNullOrEmpty(file)) { string[] splitted = file.Split('.'); if (splitted.Length > 0) { string Test = splitted[1]; } } 上面的代码如何可能返回此错误: UNHANDLED EXCEPTI

我在一个在线IDE上编码,它既不公开程序输入,也不公开标准输出,在这种特殊情况下(输入太大)

文件
视为任意字符串:

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
行号总是在我尝试访问拆分的[1]的任何位置。这没有任何意义:如果
splitted.Length>0
splitted[1]
存在


这是在线IDE的一个bug吗?或者是否存在这样的情况,即C#string[]的长度大于0,并在读取[1]处的值时抛出IndexOutOfRangeException?

您正在检查数组是否长于0,然后尝试引用数组中的第二个元素。如果长度为1,则为错误

如果始终需要第二个元素,请检查阵列是否至少有两个元素:

if (splitted.Length > 1)
或者,如果您尝试访问第一个元素:

在c#中,数组索引从
0
开始。它看起来像是在代码行
string Test=splitted[1]
表示您正试图访问拆分的
中的第一个元素,但由于索引从
0
开始,索引
1
中的元素将是第二个


您希望将其更改为
string Test=splitted[0]

C中的数组总是以0开始索引。您应该尝试拆分[0]

C#使用基于零的索引。拆分的[0]保证存在于条件中,因为它是数组中的第一个元素。Splitted[1]是数组中的第二个元素。

如果
长度
为1,则
Splitted
将有一个元素,可通过表达式
Splitted[0]
访问。因此,
splitted[1]
可能会使用超出范围的索引。哦,我的上帝。。。我真傻。不知何故,我没有想到分割的长度总是>0。谢谢。@Saturnix“在计算机科学中有两件困难的事情:缓存失效、命名和一个一个的错误。”
string Test = splitted[0];