Если у меня есть массив и выполняется ToString, это просто объединяет значения массива в одну длинную разделенную запятыми строку или это невозможно в массиве?
Array.toString()
Ответ 1
Вариант 1
Если у вас есть массив string
s, вы можете использовать String.Join
:
string[] values = ...;
string concatenated = string.Join(",", values);
Вариант 2
Если вы имеете дело с массивом любого другого типа, и используете .NET 3.5 или выше, вы можете использовать LINQ:
string concatenated = string.Join(",",
values.Select(x => x.ToString()).ToArray());
Ответ 2
Вы можете это сделать, но это не поведение по умолчанию. Самый простой способ сделать это (от .NET 3.5 в любом случае), вероятно:
string joined = string.Join(",", array.Select(x => x.ToString()).ToArray());
MoreLINQ имеет встроенный метод для этого:
string joined = array.ToDelimitedString();
или явно укажите разделитель:
string joined = array.ToDelimitedString(",");
Ответ 3
Это не так (как вы заметили).
Для строковых массивов вы можете использовать:
string.Join(",", myArray)
для других массивов, я думаю, вам нужно самому закодировать его.
Ответ 4
Нет, ToString массива даст вам строку имени типа объекта. используйте вместо этого метод String.Join.
Ответ 5
Чтобы добиться этого эффекта, вы должны вызвать String.Join(string, string [])
т.е.
string[] stringArray = new string[] { "a", "b", "c" };
string.Join(",", stringArray);
Ответ 6
Вы можете использовать string.Concat(Object[] args)
. Это вызывает метод ToString()
для каждого объекта в args
. В пользовательском классе вы можете переопределить метод ToString()
для достижения пользовательского преобразования строк следующим образом:
public class YourClass
{
private int number;
public YourClass(int num)
{
number = num;
}
public override string ToString()
{
return "#" + number;
}
}
Теперь вы можете объединить массив экземпляров своего пользовательского класса:
YourClass[] yourArray = { new YourClass(1), new YourClass(2), new YourClass(3) };
string concatenated = string.Concat(yourArray);
К сожалению, этот метод не добавляет разделителей, но я считаю его элегантным. Переменная concatenated
будет содержать "#1#2#2"
.