[英]ERROR: use of unassigned local variable (for string array)
我正在从我的 App.config 文件中读取连接字符串,为此我有以下代码。
try
{
string[] dbnames;
int counter = 0;
foreach (ConnectionStringSettings connSettings in ConfigurationManager.ConnectionStrings)
{
dbnames[counter] = connSettings.Name;
counter++;
}
return dbnames;
}
catch
{
throw;
}
这段代码给我错误使用未分配的局部变量为 dbnames。 我的 App.config 中有多个连接字符串。 它们可以是 none、1、2 等等。 视需要而定。 所以我不能静态分配 dbname 大小。 因为如果它们超过指定大小的值,就会出现这种情况。 例如。 如果我将它的大小分配为 5,如果我得到第 6 个连接字符串会怎样。 如果我有 1 个,那么剩下的 4 个将是内存浪费。
如果我错了,请告诉我。
谢谢。
在初始化数组时使用它。
string[] dbnames = new string[ConfigurationManager.ConnectionStrings.Count];
或使用List<string>
您不能像那样动态地调整System.Array
大小。
幸运的是,没有理由这样做。 使用不同类型的集合,例如List<T>
。 (确保您已经为System.Collections.Generic
命名空间添加了using
声明!)
与数组一样, List<T>
允许您通过索引访问列表中的元素,但它也可以在运行时动态调整大小,从而满足您的问题的要求。 当然,由于它是一种通用方法,因此它具有强类型的额外优势(与您的其他一些选择相比)。 由于您正在使用string
类型,因此您将使用List<string>
。
编辑:绝对不需要那个空的try
/ catch
块。 如果您只想立即重新制作异常,为什么要捕获异常? 就让它冒泡吧。 通常,除非且仅当您可以修复异常的直接原因时,否则不应捕获异常。
您将dbnames
声明为字符串数组,但没有定义它的大小。
你需要这样的东西:
string[] dbames = new string[4];
其中“4”是数组的长度。
但是,如果您需要可变长度,则应使用List<string>
。 在这种情况下,您可以根据需要添加到其中。
正如其他人所说,您可以只使用List<string>
。 不过,如果您使用 .NET 3.5 或更高版本,我会使用 LINQ 来完成所有这些工作:
return ConfigurationManager.ConnectionStrings
.Cast<ConnectionStringSettings>()
.Select(setting => setting.Name)
.ToArray(); // Or ToList
IEnumerable<string>
在课后声明它,例如
我也在写代码,我以前总是遇到这个问题
public class ABC{
string[] array;
ABC()
{
}
//your_function_logics
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.