与Array.toString()

如果我有一个数组并执行ToString那么只是将数组值串在一个长逗号分隔的字符串中,或​​者在数组中是不可能的?

选项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()); 

你当然可以这样做,但这不是默认行为。 最简单的方法(无论如何从.NET 3.5)可能是:

 string joined = string.Join(",", array.Select(x => x.ToString()).ToArray()); 

MoreLINQ有一个内置的方法来做到这一点:

 string joined = array.ToDelimitedString(); 

或明确指定分隔:

 string joined = array.ToDelimitedString(","); 

它没有(正如你所注意到的)。

对于字符串数组,您可以使用:

 string.Join(",", myArray) 

对于其他arrays,我认为你需要自己编写代码。

要实现此效果,您应该调用String.Join(string,string [])

 string[] stringArray = new string[] { "a", "b", "c" }; string.Join(",", stringArray); 

不,数组的ToString将为您提供对象的Type name字符串。 请改用String.Join方法。

您可以使用string.Concat(Object[] args) 。 这将调用args中每个对象的ToString()方法。 在自定义类中,您可以覆盖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"