C# 调试System.FormatException

C# 调试System.FormatException,c#,debugging,exception,runtime-error,C#,Debugging,Exception,Runtime Error,“索引(从零开始)必须大于或等于零且小于参数列表的大小。” (“指数为0(零),指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0 执行该行时: search.Filter = string.Format(filter,filterparams); 其中,在运行时,filter包含“(sAMAccountName={0})(sAMAcco

“索引(从零开始)必须大于或等于零且小于参数列表的大小。”
(“指数为0(零),指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0,指数为0

执行该行时:

search.Filter = string.Format(filter,filterparams);
其中,在运行时,
filter
包含
“(sAMAccountName={0})(sAMAccountName={1})”
filterparams
是一个包含两个成员字符串“Testuser”和“Vertrieb”的字符串列表


错误消息到底想告诉我什么?

错误表明格式字符串中的标记比参数列表中的标记多。String.Format的第二个参数是对象数组(来自MSDN):


StringList未隐式转换为对象数组,因此String.Format将StringList解释为一个参数-因此出现错误。

错误表示格式字符串中的标记多于参数列表中的标记。String.Format的第二个参数是对象数组(来自MSDN):


StringList未隐式转换为对象数组,因此String.Format将StringList解释为一个参数-因此出现错误。

使用
search.Filter=String.Format(Filter,filterparams.ToArray())
,或
search.Filter=string.Format(Filter,filterparams[0],filterparams[1])Thx,这很有效。第二个参数限制为两个参数-但在生产中,矿山可以使用两位数。使用
search.Filter=string.Format(Filter,filterparams.ToArray())
,或
search.Filter=string.Format(Filter,filterparams[0],filterparams[1])Thx,这很有效。第二个参数限制为两个参数,但在生产矿井中可能会变成两位数。为了扩展这一点:过滤器数组的每一项都必须直接输入格式化函数。只需调用filterparams.ToArray()@Christian Sauer:谢谢您提供的额外信息。要扩展此功能,必须将筛选器数组的每个项直接馈送到format函数。只需调用filterparams.ToArray()@Christian Sauer:谢谢你提供的额外信息。
public static string Format(
    string format,
    params object[] args
)