我有两个 Delimit 函数可以为我执行此操作。
它们的占用空间非常小,因为没有创建第二个数组,并且在返回字符串的地方,在幕后使用了 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();