StringBuilder AppendFormat IEnumarble

StringBuilder AppendFormat IEnumarble

我有一个字符串生成器和一个对象列表,

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

我看到 IntelliSense 错误

None existing arguments in format string

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

里面用了一个列表参数

您需要使用 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 的单个值无效。

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

public StringBuilder AppendFormat(string format, object arg0)

需要一个参数,因此包含两个参数 ("{0}, {1}") 的 format 无效。

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

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

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

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

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

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