指数数组的边界之外

时间:2012-08-28 06:23:52

标签: c# arrays

很简单的问题。但仍然无法解决。

我将消息传递给数组

feet nimantha 1 2 3 4 5 6 7 8 120827

我已经宣布了这样的数组,

string[] arr1 = new string[10];

之后我尝试了

string[] arr1 = new string[11];

但两个都向我展示了这个异常 - Index was outside the bounds of the array

代码在这里。

protected void Page_Load(object sender, EventArgs e)
{

    try
    {
        string mobileNo = Request.QueryString["msisdn"];
        int  dest = int.Parse(Request.QueryString["shortcode"].ToString());
        string messageIn = Request.QueryString["msg"];
        string operatorNew = Request.QueryString["operator"];

        // Label1.Text = "ok";

        WriteToFile(mobileNo, dest, messageIn, operatorNew);

        if (messageIn != null)
        {
            string[] arr1 = new string[11]; 
            arr1 = messageIn.Split(' ');
            int size = arr1.Length;
            string arrmsg = "";
            foreach (string _element in arr1)
            {
                if (arrmsg == "")
                    arrmsg = _element;
                else
                {
                    arrmsg = arrmsg + "/" + _element;
                }
            }
        }
    }
    catch {}
}

3 个答案:

答案 0 :(得分:1)

(编辑为问题中添加了更多代码):

尝试替换它:

string[] arr1 = new string[11]; 
arr1 = messageIn.Split(' ');

以下内容:

string[] arr1 = messageIn.Split(new char[]{' '});

这可能导致数组长于11,但这并不重要 - 在此处填充数组之前,不需要指定长度。

答案 1 :(得分:1)

我认为你把它与字符数组混淆了。 在你的情况下,我只会这样做:

arr1[0] = "feet nimantha 1 2 3 4 5 6 7 8 120827";

如果那不是你想要的,请看Kjartan。 Sry,我写的是错的,代码是在我写完之后写的。 :(

答案 2 :(得分:0)

如果您需要的结果是

arrmsg = "feet/nimantha/1/2/3/4/5/6/7/8/120827"

并且你有异常,因为你的字符串数组arr1具有不匹配的长度,其结果是字符串Split with whitespace 然后你可以声明并分配你的字符串数组来存储字符串Split result

//string[] arr1 = new string[11];
string[] arr1 = messageIn.Split(' ');

然后arr1可以根据字符串Split结果具有不同的数组大小。例如,

string messageIn ="feet nimantha 1 3 4 5 6 7 8 120827";
//arr1 is string[10] here
string[] arr1 = messageIn.Split(' ');

messageIn = "feet nimantha 1 3 4 5 6 7 8 120827 2132144";
//arr1 is string[11] here
arr1 = messageIn.Split(' ');

因此您不必担心字符串数组的大小arr1与字符串Split的结果不匹配。