Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串不包含add方法的定义_C#_.net - Fatal编程技术网

C# 字符串不包含add方法的定义

C# 字符串不包含add方法的定义,c#,.net,C#,.net,我正在用.NET做一个程序。我正在对程序做一些修改。我犯了一个错误 字符串不包含add方法的定义 我不知道如何纠正这个错误 private string process(string fname) { //string errs = ""; string Strings = ""; string[] lines = File.ReadAllLines(fname); StringBuilder b = new StringBuilder(); for (int i = 1;

我正在用.NET做一个程序。我正在对程序做一些修改。我犯了一个错误

字符串不包含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());
  }  
}  
私有字符串进程(字符串fname)
{
//字符串errs=“”;
字符串=”;
string[]lines=File.ReadAllLines(fname);
StringBuilder b=新的StringBuilder();
对于(int i=1;i
字符串
类上没有
Add()
方法:

Strings.Add(b.ToString());
您可以改为使用
+=
运算符来压缩字符串:

Strings += b.ToString();

string
类没有定义名为
Add
的方法,因此
Strings.Add(b.ToString())
行不会编译。根据你喜欢做什么,我可以想象有两种可能的解决方案

  • 您想将
    字符串的当前值
    b
    的值结合起来:
    Strings+=b.ToString()
    。但请记住,您总是在同一个StringBuilder中添加内容,因此最终会添加很多内容。但另一方面,您可以在for循环之后编写
    Strings=b.ToString()
    ,因为这样您就将所有文本添加到了StringBuilder中
  • 您希望将
    b
    的当前值作为新字符串添加到字符串集合中。在这种情况下,
    字符串
    应该是一个集合。
    Add
    方法建议您查看
    列表
    类<代码>列表字符串=新列表()。现在您可以使用
    Strings.Add(b.ToString())
    。但这里还要记住,您总是附加到相同的
    StringBuilder
    ,而不刷新它
    使用StringBuilder而不是字符串。它支持append方法来连接字符串。而且StringBuilder是可变的。当我们使用“StringBuilder”对象时,会使用Append方法。这意味着在现有字符串上进行插入。对StringBuilder对象的操作比字符串操作快,因为复制是在同一位置完成的。如果必须在哪一行执行大量字符串操作,则使用StringBuilder会更有效。

    您会收到错误?没有为字符串定义“添加”方法。。。这还不够清楚吗?(这是最后一行@Anders)@JeffMercado yea-tat是正确的。但是我不知道如何解决它。你的方法返回一个
    string
    对象,为什么不简单地返回
    b.ToString()
    并删除
    Strings.Add(b.ToString())行。您可以从一些更好的变量命名中获益。”b'并不完全代表什么。最好告诉他也使用
    StringBuilder
    ,不?由于他已经将其用于内部for,并且它优于字符串连接…
    StringBuilder
    更适合于此,但需要进行更多更改。我只关注编译器错误本身。不是真的:只需删除
    Strings.Add(b.ToString())行,并添加
    返回b.ToString()在for循环之后;)