StringBuilder AppendFormat IEnumarble

时间:2016-08-23 22:21:28

标签: c# stringbuilder

我有一个字符串构建器和一个对象列表

int[] values = new int[] {1,2};
StringBuilder builder = new StringBuilder();
builder.AppendFormat("{0}, {1}", values );

我看到了智能感知错误

  

格式字符串

中没有现有参数

为什么我会看到这个错误,我应该怎么做 我在AppendFormat

中使用了一个列表参数

3 个答案:

答案 0 :(得分:2)

您当前正在使用的AppendFormat的重载(或编译器决定使用的重载)具有以下签名:

public StringBuilder AppendFormat(string format, object arg0)

期望单个参数,因此包含两个参数(format)的"{0}, {1}"无效。

您的目的是将数组作为多个参数传递,您需要使用的重载如下:

public StringBuilder AppendFormat(string format, params object[] args)

请注意,第二个参数是object[],而不是int[]。要使代码使用此重载,您需要将int数组转换为object数组,如下所示:

builder.AppendFormat("{0}, {1}", values.Cast<object>().ToArray());

答案 1 :(得分:1)

您需要传入一个对象数组而不是一个int数组。否则它认为数组对象是arg0的参数。

object[] values = new object[] { 1, 2 };
StringBuilder builder = new StringBuilder();
builder.AppendFormat("{0}, {1}", values);

答案 2 :(得分:0)

您需要使用foreach

遍历列表
int[] values = new int[] {1,2};
StringBuilder builder = new StringBuilder();
foreach (int val in values)
{
    builder.AppendFormat("{0}\n", val);         
}
Console.WriteLine(builder);

请参阅Working Fiddle

在您的情况下,您使用了:

builder.AppendFormat("{0}, {1}", values );

当你传递2个{0}, {1}参数时,这个参数对于单个values值无效。