C# Array.ToString()是否提供了有用的输出?

C# Array.ToString()是否提供了有用的输出?,c#,C#,如果我有一个数组并执行一个ToString(),那么这只是将数组值串在一个逗号分隔的长字符串中,还是在一个数组中不可能这样做?选项1 如果您有一个strings数组,则可以使用string.Join: string[] values = ...; string concatenated = string.Join(",", values); 选项2 如果您正在处理任何其他类型的数组,并且正在使用.NET 3.5或更高版本,则可以使用LINQ: string concatenated = st

如果我有一个数组并执行一个
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());
有一个内置的方法来执行此操作:

string joined = array.ToDelimitedString();
或显式指定分隔符:

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

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

它不会(正如您所注意到的)

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

string.Join(",", myArray)

对于其他数组,我认为您需要自己编写代码。

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


您可以使用
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);

不幸的是此方法没有添加任何分隔符,但我发现它很优雅。连接的变量
将包含
“#1#2#2”

您是否尝试过,并检查了输出?我不知道,但您可以尝试一下……如果数组类型的ToString是可接受的,我有一个MyCustomType[]而不是string[]的数组,这对于所有值类型来说,简单的字符串联接都可以工作。大多数其他用于曝光的类型也会有一个友好的默认ToString。String.Join不会自动调用ToString()-根据我和Adam的回答,您需要将字符串转换为字符串数组作为开始。@Sky:String.Split是一个BCL类函数。此函数的签名在任何其他.NET语言中都没有区别。我并不是说没有一种语言不“把值放在第一位”(虽然我不确定这是否真的是一种对语言进行分类的方法),我是说,无论您在C#、VB.NET等中使用它,您都将首先传递定界符。在我的例子中,它是一个自定义对象数组。我必须先实现IEnumerable然后再实现ADAM,所以您在数组中使用string.split?@coffee:任何数组都已经实现了
IEnumerable
IEnumerable
(其中
T
是数组的类型)。我不确定我是否理解你关于
string.Split的问题。如果(不太可能)你(或者更可能是发现这个问题的人)有一个名为
c
char[]
数组,那么你只需要
新字符串(c)也是。我在这里加上这句话是因为当谷歌刚刚提醒我的时候,我觉得自己很愚蠢;o)
YourClass[] yourArray = { new YourClass(1), new YourClass(2), new YourClass(3) };
string concatenated = string.Concat(yourArray);