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);