C# 字符串不包含add方法的定义
我正在用.NET做一个程序。我正在对程序做一些修改。我犯了一个错误 字符串不包含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;
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循环之后;)