は、私が初期化配列
完全に働いたstring[] matchingFiles = Directory.GetFiles(FilePath, FileNamePattern);
それを行うためのこの方法を使用していたが、今私はDirectory.GetFilesを囲みたいこと/試しに呼び出しますキャッチブロック、しかし、私はまた、文字列配列の宣言を持っていないので、それは正しい範囲でtryブロックの外でそれを使用することはできません。私がしようとした場合でも、この:私は、文字列配列を初期化していない
string[] matchingActiveLogFiles;
try
{
matchingFiles = Directory.GetFiles(FilePath, FileNamePattern);
}
catch (Exception ex)
{
//logerror
}
は、私はエラーを持っています。だから私はtryブロックの外側に文字列配列を宣言する必要がありますこの状況で何がベストプラクティスですか?そしてもしそうなら、どのように?
それとも、nullに設定のような配列を初期化するために、アイテムの数を正確に知る必要はありません。 C#コンパイラは、(outパラメータとして渡されない限り)すべての変数を使用する前に初期化する必要があります。この場合、nullへの初期化で十分です。 –
これはあなたの問題ではありません。問題はあなたの命名です。あなたはmatchingActiveLogFilesを定義していますが、matchingFilesに割り当てています。定義中に明示的に初期化しないと、.NETは文字列配列を自動的にnullに設定します。 – Josh
@JoshでもC#の明確な譲渡規則では、ローカルを初期化する必要があります。 – phoog