2012-01-04 8 views
-3

Я делаю программу в .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()); 
    } 
} 
+1

На какой строке вы получаете сообщение об ошибке? –

+3

Не существует метода «Добавить», определенного для строк ... это недостаточно ясно? (это последняя строка @Anders) –

+0

Strings.Add (b.ToString()); – user1129403

ответ

1

Там нет Add() метод на string класса:

Strings.Add(b.ToString()); 

Вы можете Concat строки с += оператора вместо:

Strings += b.ToString(); 
+1

лучше сказать ему использовать 'StringBuilder' для этого тоже нет? поскольку он уже использует его для внутреннего для него, и он превосходит конкатенацию строк ... – balexandre

+0

'StringBuilder' лучше подходит для этого, но потребует больших изменений. Я просто сосредоточился на самой ошибке компилятора. –

+2

не совсем: просто удалите строку 'Strings.Add (b.ToString());' и добавьте 'return b.ToString();' после цикла for;) – balexandre

3

string класс не определяет метод Add поэтому строка Strings.Add(b.ToString()) не компилируется. В зависимости от того, что вы хотите сделать есть 2 возможных решения я могу себе представить из

  1. Вы хотите совместить текущее значение Strings со значением b: Strings += b.ToString(). Но имейте в виду, что вы всегда добавляете материал к тому же StringBuilder, так что в конце концов вы многое добавляете. Но, с другой стороны, вы можете просто написать Strings = b.ToString() после цикла for, потому что тогда вы добавили весь текст в StringBuilder.
  2. Вы хотите добавить текущее значение b в качестве новой строки в коллекцию строк. В этом случае Strings должен быть коллекцией. Метод Add предполагает, что вы должны посмотреть в классе List. List<string> Strings = new List<string>();. Теперь вы можете использовать Strings.Add(b.ToString()). Но также здесь имейте в виду, что вы всегда добавляете к тому же StringBuilder, не смывая его!
1

Используйте StringBuilder вместо строки. Он поддерживает метод append для конкатенации строк. Более того, StringBuilder изменен. Когда мы используем объект StringBuilder, используется метод Append. Это означает, что в существующей строке выполняется вставка. Операция над объектом StringBuilder выполняется быстрее, чем операции со строками, поскольку копия выполняется в том же месте. Использование StringBuilder более эффективно, если требуется большое количество манипуляций с строками.

Смежные вопросы