导致此分析错误的原因是什么? ArgumentOutOfRangeException:不能为负数。参数名称:长度

时间:2015-01-21 00:56:35

标签: c# parsing unity3d

我有一个对象列表和一个delete()但它正在生成

ArgumentOutOfRangeException: Cannot be negative. Parameter name: length 

    private void delete(int a)
    {
        if (currentSelected == -1) return;

        string str = list.IndexOf(list[currentSelected]).ToString();
        Debug.Log("STR: "+str); //returns the correct index
        int id = int.Parse(str.Substring(0, str.IndexOf("\t"))); //Error occurs here
   }

为什么id得到负值?

1 个答案:

答案 0 :(得分:1)

如果找不到该元素,

IndexOf将返回-1。

显然,str中没有制表符,因此你的长度为-1,抛出异常。

快速检查有助于此:

if (str.Contains('\t'))
{
   ...
}