Mr *_*ace 4 c# arrays string list
在我的应用程序中构造连接字符串时,我遇到了一些相当异常的异常.
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));
Run Code Online (Sandbox Code Playgroud)
错误:
mscorlib.dll中发生了未处理的"System.FormatException"类型异常
附加信息:索引(从零开始)必须大于或等于零且小于参数列表的大小.
我的问题是:List的索引有什么问题?
这与索引无关.在第一种情况下,您使用以下重载String.Format
:
public static void Format(string format, object arg);
Run Code Online (Sandbox Code Playgroud)
在第二个你使用这个:
public static void Format(string format, params object[] args);
Run Code Online (Sandbox Code Playgroud)
所以在第一种情况下你只传递一个参数.这会导致异常,因为您的格式字符串需要多个参数.
在第二种情况下,您提供所有参数,因为传递的是数组而不是一个List
对象.