错误:使用未分配的局部变量(用于字符串数组)

boo*_*ota 4 .net c# arrays unassigned-variable c#-4.0

我正在从我的App.config文件中读取连接字符串,为此我有以下代码.

try
 {
    string[] dbnames;
    int counter = 0;
    foreach (ConnectionStringSettings connSettings in ConfigurationManager.ConnectionStrings) 
    {
        dbnames[counter] = connSettings.Name;
        counter++;
    }
    return dbnames;
 }
 catch
 {
    throw;
 }
Run Code Online (Sandbox Code Playgroud)

这段代码让我错误地使用了未分配的dbnames局部变量.我将在App.config中有多个连接字符串.它们可以是无,1,2等等.根据需要.所以我不能静态分配dbname大小.因为如果超过指定大小的值,可能会出现这种情况.例如.如果我指定它的大小为5,如果我得到第6个连接字符串怎么办?如果我有1,那么剩下的4将是记忆的浪费.

如果我错了,请告诉我.

谢谢.

Ade*_*eel 12

在初始化阵列时使用它.

 string[] dbnames = new string[ConfigurationManager.ConnectionStrings.Count];
Run Code Online (Sandbox Code Playgroud)

或使用 List<string>


Cod*_*ray 5

您无法System.Array像这样动态调整大小.

幸运的是,没有理由这样做.使用不同类型的集合,例如List<T>.(确保您已usingSystem.Collections.Generic命名空间添加了声明!)

与数组类似,a List<T>允许您通过索引访问列表中的元素,但它也可以在运行时动态调整大小,从而满足您的问题中的要求.当然,由于它是一种通用方法,因此它具有强类型的额外优势(与其他一些选择相比).由于你正在使用string类型,你会使用List<string>.

编辑:绝对不需要那个空try/ catch块.如果您只是立即重新开始,为什么会遇到异常?让它冒出来吧.一般情况下,除非您能解决其直接原因,否则您不应该捕获异常.