C#索引和长度必须指向字符串中的位置。参数名称:长度

时间:2016-05-03 09:34:14

标签: c#

我想添加此代码,但它不起作用。这是一个聊天系统,当一个玩家在他的文本框(聊天)中连接到我想要的服务器以显示HelloMsg时,但是当我启动该程序时,我得到一个错误。

抱歉我的英文不好!

#region ' Read Configuration.ini '
StreamReader Sr = new StreamReader(Database + "\\Configuration.ini");

string line = null;

while ((line = Sr.ReadLine()) != null)
{
    if (line.Substring(0, 12) == "HelloMessage")
    {
        string[] StrMsg = line.Split('=');
        HelloMsg = StrMsg[1].Trim();
    }
}

Sr.Close();

1 个答案:

答案 0 :(得分:2)

String.Substring需要两个参数,即起始索引和长度。在两种情况下会出现此异常:

  1. startIndexlength表示不在此实例中的位置。
  2. startIndexlength小于零。
  3. 所以你应该处理字符串的长度小于12:

    while ((line = Sr.ReadLine()) != null)
    {
        if (line.Length >= 12 && line.Substring(0, 12) == "HelloMessage")
        {
            string[] StrMsg = line.Split('=');
            HelloMsg = StrMsg[1].Trim();
        }
    }
    

    更可读,更安全的方法是使用String.StartsWith

    if(line.StartsWith("HelloMessage"))
    {
      // ...
    }