1

この宣言について:

string[] TardyEvenEmorys;

...Resharper は、「フィールド 'TardyEvenEmorys' は決して割り当てられません。

コードの後半で、string[] に代入が行われます。

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 は私に何を言っているのでしょうか? 宣言時に string[] をインスタンス化する必要があること、または...???

4

2 に答える 2

15

配列の個々の要素を割り当てていますが、実際に配列自体を作成することはありません。

では、Resharper は私に何を言っているのでしょうか? 宣言時に string[] をインスタンス化する必要があること、または...???

配列をどこかでインスタンス化する必要があります。これは、宣言中または後で発生する可能性があります。たとえば、宣言中にそれを行うには、次を追加する必要があります。

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

これがないと、要素の 1 つを初めて割り当てるときに、配列が null であるため例外が発生します。

于 2012-09-07T16:33:33.960 に答える
3

次のコードがどこかに欠けており、null ポインター例外が発生するはずです。

TardyEvenEmorys = new string[22];
于 2012-09-07T16:34:21.000 に答える