Подтвердить что ты не робот

Array.toString()

Если у меня есть массив и выполняется ToString, это просто объединяет значения массива в одну длинную разделенную запятыми строку или это невозможно в массиве?

4b9b3361

Ответ 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".