我有两个“分隔符”函数,它们可以帮助我实现这一功能。
它们的占用内存很小,不需要创建第二个数组,在返回字符串时,使用了StringBuilder来优化,因此不会导致不断拼接同一字符串而导致延迟。
因此,它们非常适用于长度非常大和/或未知的系列。
第一个函数将写入TextWriter并不返回任何内容,第二个函数将返回一个字符串,并代理到第一个函数中,传递一个StringWriter。
public static void Delimit<T>(this IEnumerable<T> me, System.IO.TextWriter writer, string delimiter)
{
var iter = me.GetEnumerator();
if (iter.MoveNext())
writer.Write(iter.Current.ToString());
while (iter.MoveNext())
{
writer.Write(delimiter);
writer.Write(iter.Current.ToString());
}
}
public static string Delimit<T>(this IEnumerable<T> me, string delimiter)
{
var writer = new System.IO.StringWriter();
me.Delimit(writer, delimiter);
return writer.ToString();
}
所以根据以上价格,您将拥有:
decimal[] prices = { 39.99M, 29.99m, 29.99m, 19.99m, 49.99m }
Console.WriteLine("the prices are {0}", prices.Delimit(", "))
或者
decimal[] prices = { 39.99M, 29.99m, 29.99m, 19.99m, 49.99m };
Console.Write("the prices are ")
prices.Delimit(System.Console.Out, ", ");
Console.WriteLine();
ToArray()
函数。 - Jon Skeetstring.Join(", ", prices);
- Marc