【发布时间】:2016-09-28 00:31:36
【问题描述】:
在我的应用程序中构造连接字符串时遇到了一些相当奇怪的异常。
string basis = "Data Source={0};Initial Catalog={1};Persist Security Info={2};User ID={3};Password={4}";
List<string> info1 = new List<string>(){ "SQLSRV", "TEST", "True", "user1", "pass1" };
string[] info2 = new string[] { "SQLSRV", "TEST", "True", "user1", "pass1" };
// throws exception
Console.WriteLine(String.Format(basis, info1));
// works fine
Console.WriteLine(String.Format(basis, info2));
错误:
在 mscorlib.dll 中发生了“System.FormatException”类型的未处理异常
附加信息:索引(从零开始)必须大于或等于零且小于参数列表的大小。
我的问题是:List 的索引有什么问题?
【问题讨论】:
-
请提及异常详情。
-
但是为什么你首先需要使用
List<string>呢?你可以使用像var info1 = { "SQLSRV", "TEST", "True", "user1", "pass1" };这样的数组初始化器,它会起作用 -
代码可以简化@Fabjan。也许该列表是在其他地方构建的......
-
是的,但如果是这样的话,OP应该提到它
-
标题有点混乱,因为
List(T).IndexOf和Array.IndexOf(T)方法,它会误导未来的读者。