2010-11-15 2 views
0
String f = DropDownList1.SelectedItem.Value; 
    String s = DropDownList3.SelectedItem.Value.PadLeft(3,'0'); 
    String q = DropDownList2.SelectedItem.Value; 
    String w = TextBox2.Text.ToString(); 
    String o = TextBox3.Text.ToString(); 

Я хочу, чтобы объединить его в одну строку, т.е. строки U = F + S + д + ш + оCombinining несколько строк в одну строку

Как это сделать?

+0

Я думаю, вы ответили на свой вопрос. –

ответ

3

Код, который вы дали должен работать нормально:

String u = f + s + q + w + o; 

Обратите внимание, что это будет преобразовано компилятором в:

String u = String.Concat(new String[] { f, s, q, w, o }); 

EDIT: Все остальные ответы до сих пор полагают, что StringBuilder является правильный путь сюда. Это не. StringBuilder велика, чтобы избежать проблем, как это:

// Bad code - don't use 
string result = ""; 
foreach (string value in collection) { 
    result += value; 
} 

В этом случае было бы более крупные временные строки, созданные из-за конкатенация выполняется на каждой итерации цикла. Промежуточное значение равно только, необходимое для следующей итерации цикла.

Сейчас, в этом случае, мы знаем всего Результат из конкатенации за один раз: f + s + q + w + o. Компилятор преобразует это в один вызов String.Concat, поэтому никаких временных строк не требуется. Кроме того, метод String.Concat может построить строку результата с точно правильной внутренней длиной хранилища, поскольку он знает все содержимое для начала. В StringBuilder есть начальная емкость, которая затем увеличивается при перераспределении, где это необходимо. Это означает, что обычно либо. В результате строка имеет более крупный резервный магазин, чем требуется, или есть заключительный этап «копирования» для преобразования в строку нужного размера. (Какой курс действий берется конкретной реализации;. Я считаю, что ранние версии рамок, используемых, чтобы сделать первый, и более поздние версии сделать последний)

+0

Tank you very much – Ishan

2
String u= f+s+q+w+o; 

или

StringBuilder sb = new StringBuilder(); 
sb.Append(f); 
sb.Append(2); 
sb.Append(q); 
sb.Append(w); 
sb.Append(o); 
+0

Обратите внимание, что использование 'StringBuilder' здесь, вероятно, будет * менее * эффективным, чем конкатенация. –

+0

Используйте StringBuilder(), если вы хотите объединить большое количество строк. Первый пример Италии - это то, что вы делаете. –

+0

Это действительно менее эффективно. –

-1

лично идентификатор использовать stringbuild в качестве строки неизменна и, таким образом, создавать новые объекты для каждого использования, где требуется выходной сигнал

  var u = new StringBuilder(); 
      u.Append(DropDownList1.SelectedItem.Value); 
      u.Append(DropDownList3.SelectedItem.Value.PadLeft(3, '0')); 
      u.Append(DropDownList2.SelectedItem.Value); 
      u.Append(TextBox2.Text.ToString()); 
      u.Append(TextBox3.Text.ToString()); 
+0

В этом случае использование 'StringBuilder' будет менее эффективным - повторная конкатенация строк является проблемой, но в этом случае вся конкатенация выполняется в одном выражении, поэтому временные строки не требуются. –

0
String result= f+s+q+w+o; will do the trick 

однако использовать StringBuilder для такого типа операций

EDIT однако всегда использовать StringBuilder для такого типа операций

+0

Нет, используйте только 'StringBuilder', когда это действительно правильный подход. –

+0

ohh да, я ошибочно написал, что =) .. Спасибо – Singleton

+0

Нет, вы приняли мой комментарий не так. Вы не должны * всегда использовать StringBuilder - в этом случае он менее эффективен! См. Мой ответ. –

0

Ну, если вы не заботитесь о производительности, Строки и = п + S + q + w + o; на самом деле будет работать. Чем более «обычным» способом объединения большого количества строк является использование класса StringBuilder, который вы можете найти в Системе.Текст пространство имена:

public class bla 
{ 
    public String concatSomeStrings(String a, String b, String c) { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append(a); 
     sb.Append(b); 
     sb.Append(c); 

     return sb.ToString(); 
    } 
} 

Преимущества использования строкового построителя является то, что внутри, не перераспределить пространство для новой строки для каждой операции concatination, поэтому его быстрее и поэтому считается более «правильный» путем. Лично, когда вам нужно всего лишь сконфигурировать 5 строк - f + s + q + w + o - это то, что я предпочитаю.

Надеюсь, что поможет :-)

+0

Как и во всех других ответах, вы пропустили различие между выполнением нескольких операций конкатенации за один раз и конкатенированием несколько раз. StringBuilder предпочтительнее в последнем случае. –