Передача строкового массива в метод и отображение результата (WPF, C #) - PullRequest
0 голосов
/ 18 июня 2019

Когда я выбрал папку, я печатаю этот путь к своему TextBlock (WPF):

folderName = dialog.SelectedPath.ToString();
tbArea = "Selected Path: " + dialog.SelectedPath.ToString() + "\r\n";

Поскольку, вероятно, я буду использовать это более одного раза, я создал метод:

 public void addToTextArea(string[] newString)
 {
  tbArea = tbArea + newString + "\r\n";
 }

Теперь я делаю так:

 string[] arr = {"Selected Path", dialog.SelectedPath.ToString()};

 addToTextArea(arr);

Но в результате я получаю это: System.String [] .

Что не так или отсутствует?

1 Ответ

2 голосов
/ 18 июня 2019

Если вы хотите объединить элементы в массиве с некоторой общей строкой между ними, вы можете использовать метод string.Join (обратите внимание, я использую Environment.NewLine вместо \r\n, потому что он более дружественный к платформе):

public void AddToTextArea(string[] newStrings)
{
    tbArea += string.Join(Environment.NewLine, newStrings) + Environment.NewLine;
}

Метод string.Join принимает строку для объединения элементов с, а затем возвращает строку, содержащую все элементы, объединенные с указанной строкой. Более распространенный пример:

int[] items = {1,2,3,4,5};

Console.WriteLine(string.Join(", ", items));

// Output: "1, 2, 3, 4, 5"

Обратите внимание, что в список не добавляется начальная или конечная соединительная строка (", "), поэтому в вашем случае мы добавляем символ новой строки в конец.


Альтернативой может быть создание перегрузки, которая принимает одну строку, а затем вызов этого метода для каждого элемента в массиве строк:

public void AddToTextArea(string[] newStrings)
{
    foreach (string newString in newStrings)
    {
        AddToTextArea(newString);
    }
}

public void AddToTextArea(string newString)
{
    tbArea = tbArea + newString + Environment.NewLine;
}
...