长度不能小于零

时间:2016-08-21 23:50:16

标签: vb.net outofrangeexception

我收到以下错误:

  

未处理的类型' System.ArgumentOutOfRangeException'发生在mscorlib.dll

     

附加信息:长度不能小于零。

这是产生错误的代码:

'Parse coordinate string into coordinate values (degrees, minutes, seconds)
'Degrees
StartPtr = 0
StopPtr = DegreeString.IndexOf("°", StartPtr)
Degrees = Convert.ToDouble(DegreeString.Substring(StartPtr, StopPtr - StartPtr))

错误出现在Degrees行中,告诉我我的StopPtr返回-1。

1 个答案:

答案 0 :(得分:1)

Substring(startIndex, length)函数抱怨您传递了一个负数作为length参数。由于明显的原因,这是无效的(对吧?)。

这意味着StopPtr - StartPtr必须评估小于零的值。您知道StartPtr正好为零,因为您只需将其设置为零。所以StopPtr必须小于零。

这意味着DegreeString.IndexOf("°", StartPtr)正在返回一个负数。

当找不到子字符串时,IndexOf函数返回-1。

所以问题必定是DegreeString不包含字符"°"