Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод String.Join<T>(String, IEnumerable<T>)

 

Опубликовано: Октябрь 2016

Сцепляет элементы созданной коллекции, помещая между ними заданный разделитель.

Пространство имен:   System
Сборка:  mscorlib (в mscorlib.dll)

[ComVisibleAttribute(false)]
public static string Join<T>(
	string separator,
	IEnumerable<T> values
)

Параметры

separator
Type: System.String

Строка, которую необходимо использовать в качестве разделителя. separator включается в возвращаемую строку, только если в values более одного элемента.

values
Type: System.Collections.Generic.IEnumerable<T>

Коллекция, содержащая сцепляемые объекты.

Возвращаемое значение

Type: System.String

Строка, состоящая из элементов values, разделяемых строками separator. Если values не содержит членов, метод возвращает String.Empty.

Параметры типа

T

Тип элементов параметра values.

Exception Condition
ArgumentNullException

Свойство values имеет значение null.

Если separatornull, пустая строка (String.Empty) вместо него будет использоваться. Если любой член valuesnull, вместо него используется пустая строка.

Join<T>(String, IEnumerable<T>)удобный метод, который позволяет сцеплять каждый член IEnumerable<T> коллекции без предварительного преобразования их в строки. Строковое представление каждого объекта в IEnumerable<T> сбора создается путем вызова этого объекта ToString метод.

Этот метод является полезным для выражения запросов встроенных в язык запросы (LINQ). Например, следующий код определяет очень простой Animal класс, содержащий имя животного и заказ, к которой он принадлежит. Затем он определяет List<T> , содержащий ряд Animal объектов. Enumerable.Where<TSource> Метод расширения вызывается для извлечения Animal объектов которого Order равно «Грызун». Результат передается Join<T>(String, IEnumerable<T>) метод.

using System;
using System.Collections.Generic;
using System.Linq;

public class Animal
{
   public string Kind;
   public string Order;

   public Animal(string kind, string order)
   {
      this.Kind = kind;
      this.Order = order;
   }

   public override string ToString()
   {
      return this.Kind;
   }
}

public class Example
{
   public static void Main()
   {
      List<Animal> animals = new List<Animal>();
      animals.Add(new Animal("Squirrel", "Rodent"));
      animals.Add(new Animal("Gray Wolf", "Carnivora"));
      animals.Add(new Animal("Capybara", "Rodent"));
      string output = String.Join(" ", animals.Where( animal => 
                      (animal.Order == "Rodent")));
      Console.WriteLine(output);  
   }
}
// The example displays the following output:
//      Squirrel Capybara

Следующий пример использует алгоритм решета Эратосфена для вычисления простых чисел, которые меньше или равно 100. Он назначает результат List<T> объект целочисленного типа, который затем передается в Join<T>(String, IEnumerable<T>) метод.

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      int maxPrime = 100;
      List<int> primes = GetPrimes(maxPrime);
      Console.WriteLine("Primes less than {0}:", maxPrime);
      Console.WriteLine("   {0}", String.Join(" ", primes));
   }

   private static List<int> GetPrimes(int maxPrime)
   {
      Array values = Array.CreateInstance(typeof(int), 
                              new int[] { maxPrime - 1}, new int[] { 2 });
      // Use Sieve of Eratosthenes to determine prime numbers.
      for (int ctr = values.GetLowerBound(0); ctr <= (int) Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))); ctr++)
      {

         if ((int) values.GetValue(ctr) == 1) continue;

         for (int multiplier = ctr; multiplier <=  maxPrime / 2; multiplier++)
            if (ctr * multiplier <= maxPrime)
               values.SetValue(1, ctr * multiplier);
      }      

      List<int> primes = new List<int>();
      for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++)
         if ((int) values.GetValue(ctr) == 0) 
            primes.Add(ctr);
      return primes;
   }   
}
// The example displays the following output:
//    Primes less than 100:
//       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 4.0
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 4.0
Windows Phone Silverlight
Доступно с 7.1
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: