Как отформатировать массив чисел в строку на C#?C#

Место общения программистов C#
Anonymous
Как отформатировать массив чисел в строку на C#?

Сообщение Anonymous »

Метод String.Format имеет следующую перегрузку:

Код: Выделить всё

public static string Format (string format, params object?[] args);
который, как я предполагал, предназначался для форматирования множества аргументов одного типа в строку с форматом для каждого аргумента , аналогично str.format(*args) в Python 3.
Однако, когда я вызываю:

Код: Выделить всё

var a = String.Format("{0} {1:0.00000000e+000} {2:0.00000000e+000}", new Double[] {1,2,3} );
Я получаю сообщение об ошибке:

Индекс (отсчет от нуля) должен быть больше или равен нулю и меньше размер списка аргументов.

Когда я ожидаю, что вывод в будет

Код: Выделить всё

"1 2.00000000e+000 3.00000000e+000"
аналогично a="{0:d} {1:1.8e} {2:1.8e}".format(*[1,2,3]) в Python 3.
Вызов

Код: Выделить всё

var a = String.Format("{0}", new Double[] {1,2,3} );
исправляет ошибку, но возвращает неправильный результат:

Код: Выделить всё

"System.Double[]"
Каков правильный способ C# получить ожидаемый результат Python (с другим форматированием для первого столбца)?
-
PS: Этот связанный вопрос дает мне понимание, но я уверен, что есть более простой способ, который мне не хватает:

Код: Выделить всё

String.Concat((new Double[] { 1,2,3 }).Select(k => string.Format("{0}", k)))
Это не лучший (или правильный) способ. Особенно потому, что это делает перегрузку String.Format(String, params object[]) бесполезной, ИМХО.

Подробнее здесь: https://stackoverflow.com/questions/781 ... tring-in-c

Вернуться в «C#»