我有一个字符串构建器和一个对象列表
int[] values = new int[] {1,2};
StringBuilder builder = new StringBuilder();
builder.AppendFormat("{0}, {1}", values );
我看到了智能感知错误
格式字符串
中没有现有参数
为什么我会看到这个错误,我应该怎么做
我在AppendFormat
答案 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
值无效。