String不包含add方法的定义

时间:2012-01-04 07:36:47

标签: c# .net

我正在用.NET做一个程序。我正在对程序进行一些更改。我收到了错误

  

String不包含add方法的定义。

我不知道如何纠正这个错误。

private string process(string fname)
{
  //string errs = "";
  string Strings = "";
  string[] lines = File.ReadAllLines(fname);
  StringBuilder b = new StringBuilder();
  for (int i = 1; i < lines.Length; i++)
  {
    string[] sa = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
    bool ok = false;
    if (sa[1].CompareTo("EQ") == 0)
      ok = true;
    if (!ok && sa[1].CompareTo("BE") != 0)
      continue;
    string name = sa[0];
    int token = NSECM.Lookup(name);
    if (token == 0)
    {
      //errs += "Symbol " + name + " not found\r\n";
      continue;
    }
    //int open = (int)(double.Parse(sa[2]) * 100 + 0.5);
    //int high = (int)(double.Parse(sa[3]) * 100 + 0.5);
    //int low = (int)(double.Parse(sa[4]) * 100 + 0.5);
    //int close = (int)(double.Parse(sa[5]) * 100 + 0.5);
    //uint vol = uint.Parse(sa[8]);
    //int date = cdate(sa[10]);
    //uint time = cvt(date);
    uint open = (uint)(double.Parse(sa[2]) * 100 + 0.5);
    uint high = (uint)(double.Parse(sa[3]) * 100 + 0.5);
    uint low = (uint)(double.Parse(sa[4]) * 100 + 0.5);
    uint close = (uint)(double.Parse(sa[5]) * 100 + 0.5);
    uint vol = uint.Parse(sa[8]);
    int date = cdate(sa[10]);
    //b.Append("D");
    b.Append("S" + (1000000 + token).ToString().Substring(1));
    b.Append("-" + date);
    b.Append("|D");
    b.Append(Encode.encode6(cvt(date)));
    //b.Append(Encode.encode6(time));
    b.Append(Encode.encode4(open));
    b.Append(Encode.encode4(high));
    b.Append(Encode.encode4(low));
    b.Append(Encode.encode4(close));
    b.Append(Encode.encode6(vol));
    //b.Append("\n");
    Strings.Add(b.ToString());
  }  
}  

3 个答案:

答案 0 :(得分:3)

string类没有定义名为Add的方法,因此行Strings.Add(b.ToString())无法编译。根据您的喜好,我可以想象出两种可能的解决方案

  1. 您希望将Strings的当前值与b的值Strings += b.ToString()合并。但请记住,你总是将东西附加到同一个StringBuilder,所以最后你添加了很多东西。但另一方面,您可以在for循环之后编写Strings = b.ToString(),因为那时您已将所有文本添加到StringBuilder。
  2. 您希望将b的当前值作为新字符串添加到字符串集合中。在这种情况下,Strings应该是一个集合。 Add方法建议您查看List类。 List<string> Strings = new List<string>();。现在您可以使用Strings.Add(b.ToString())。但是在这里请记住,你总是追加到同一个StringBuilder,而不是冲洗它!

答案 1 :(得分:1)

Add()类上没有string方法:

Strings.Add(b.ToString());

您可以使用+=运算符来连接字符串:

Strings += b.ToString();

答案 2 :(得分:1)

使用StringBuilder而不是string。它支持append方法来连接字符串。而且StringBuilder是可变的。当我们使用“StringBuilder”对象时,使用Append方法。这意味着,对现有字符串进行插入。 StringBuilder对象的操作比String操作更快,因为复制完成到同一位置。在必须执行大量字符串操作的情况下,使用StringBuilder会更有效