【问题标题】:Passing string array to method and display result (WPF, C#)将字符串数组传递给方法并显示结果(WPF、C#)
【发布时间】:2019-10-31 11:52:52
【问题描述】:

当我选择文件夹时,我将此路径打印到我的 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[]

出了什么问题或遗漏了什么?

【问题讨论】:

  • .NET 中默认的.ToString() 行为是返回类型的全名。所以从技术上讲没有什么问题——你只需要告诉 .NET 如何将数组的 elements 组合成一个 string

标签: c# arrays wpf string parameter-passing


【解决方案1】:

如果您想将数组中的项目与它们之间的一些公共字符串连接起来,您可以使用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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 2010-12-15
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多