无法解决“索引超出数组的范围”

时间:2013-01-08 08:57:11

标签: asp.net arrays visual-studio-2010 c#-4.0

我在ASP.NET中使用C#。我熟悉这个错误,但这次我无法解决。 我在下拉列表中有这样的文字:

  

रामकुमारसिंह8s2w8r

here राम कुमार सिंह is the name in HINDI while 8s2w8r is users' ID.

我需要将这两个值分开,并需要将它们作为会话变量传递。我正在使用的逻辑在代码中描述。

 public string reverse(string s)
        {
            char []temp=s.ToCharArray();
            Array.Reverse(temp);
            return (temp.ToString());
        }


        string dropdowntextreversed=reverse(DropDownList1.Text);
        char []delim=new char[]{' '};
        string []parts=dropdowntextreversed.Split(delim,2);
        string family_head_uid = reverse(parts[0]);
        string family_head = reverse(parts[1]);
        Session.Add("family_head", family_head);
        Session.Add("family_head_uid", family_head_uid);
        Response.Redirect("/WebForm1.aspx");

我总是得到一个错误,因为索引超出了数组的范围!我不明白这一点,因为我将字符串分成两部分,所以应该有部分[0]和部分[1]。请建议......

3 个答案:

答案 0 :(得分:2)

您将字符串拆分为 MAXIMUM 2部分,但如果只有一部分,您可能会得到一部分。

阅读此documentation

尝试断言parts.Length is == 2或只访问元素两个元素

答案 1 :(得分:2)

试试这个link。我认为temp.ToString()中存在一个问题,它将返回System.Char[]而不是您要查找的值。使用string.join代替。

答案 2 :(得分:1)

使用以下反向方法:

public string reverse(string s)
{
    return String.Join(String.Empty, s.ToCharArray().Reverse());
}