Список C # < string > в строку с разделителем

this не влияет на итоговый код - это оператор времени компиляции, и код, сгенерированный с ним или без него, будет таким же. Когда вы должны использовать его, зависит от контекста. Например, вы должны использовать его, как вы сказали, когда у вас есть локальная переменная, которая изменяет переменную класса, и вы хотите ссылаться на переменную класса, а не на локальную.

изменить: по «результирующий код будет тот же «Я имею в виду, конечно, когда какая-то переменная в локальной области не скрывает того, что принадлежит классу. Таким образом,

class POJO {
   protected int i;

   public void modify() {
      i = 9;
   }

   public void thisModify() {
      this.i = 9;
   }
}

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

  public void m() {
      int i;
      i = 9;  // i refers to variable in method's scope
      this.i = 9; // i refers to class variable
  }
530
задан bluish 6 November 2013 в 12:42
поделиться

2 ответа

Вы можете использовать String.Join. Если у вас есть List, то вы можете сначала вызвать ToArray :

List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());

В .NET 4 вам больше не нужен ToArray, так как существует перегрузка String.Join, которая принимает IEnumerable.

1094
ответ дан 22 November 2019 в 22:07
поделиться

Вы также можете сделать это с помощью linq, если хотите

var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);

Хотя я предпочитаю не-linq синтаксис в ответе Quartermeister, и я думаю, что Aggregate может работать медленнее ( вероятно, больше операций конкатенации строк).

84
ответ дан 22 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: