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);
在你的例子中,你使用了:
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);
我有一个字符串生成器和一个对象列表,
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);
在你的例子中,你使用了:
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);