为什么Resharper告诉我我的字符串[]从未被分配过?

时间:2012-09-07 16:32:12

标签: c# refactoring resharper automated-refactoring

在此声明中:

string[] TardyEvenEmorys;

... Resharper告诉我,“ Field'TardyEvenEmorys'永远不会被分配。

稍后在代码中,将对字符串[]:

进行分配
TardyEvenEmorys[1] = string.Empty;
TardyEvenEmorys[2] = string.Empty;
TardyEvenEmorys[3] = string.Empty;
TardyEvenEmorys[4] = string.Empty;

...然后有条件地添加实际值:

foreach (KeyValuePair<int, string> entry in itemNumberTardyPairs)
{
    TardyEvenEmorys[entry.Key] = entry.Value;

。 。

...最后,这些值以这种方式使用:

string url = GetTardyFilename(TardyEvenEmorys[Number]);

那么Resharper告诉我什么?我应该在声明中实例化字符串[],或者...... ???

2 个答案:

答案 0 :(得分:15)

您正在分配数组的各个元素,但实际上从未实际创建数组

  

那么Resharper告诉我什么?我应该在声明中实例化字符串[],或者...... ???

您需要在某处实例化数组。这可能是在声明期间或之后。例如,要在声明期间执行此操作,您需要添加:

string[] TardyEvenEmorys = new string[5]; // Some appropriate length

如果没有这个,第一次分配其中一个元素时,你会得到一个异常,因为数组为空。

答案 1 :(得分:3)

您在某处丢失了以下代码,并且应该获得空指针异常:

TardyEvenEmorys = new string[22];