Je veux déclarer un tableau de chaînes, j'utilisait cette façon de le faireInitialisation de C# Tableau chaîne
string[] matchingFiles = Directory.GetFiles(FilePath, FileNamePattern);
qui a parfaitement fonctionné, mais maintenant je veux enfermer les Directory.GetFiles appellent à essayer/catch block, mais je ne peux pas non plus avoir la déclaration du tableau de chaînes car il ne sera pas dans la bonne portée pour l'utiliser en dehors du bloc try. Mais si j'essaie ceci:
string[] matchingActiveLogFiles;
try
{
matchingFiles = Directory.GetFiles(FilePath, FileNamePattern);
}
catch (Exception ex)
{
//logerror
}
Je n'ai pas initialisé le tableau de chaînes, donc j'ai une erreur. Donc, je me demande quelle est la meilleure pratique dans cette situation, dois-je déclarer le tableau de chaînes en dehors du bloc try? Et si oui, comment?
Ou tout simplement le mettre à null. Le compilateur C# vous demande d'initialiser toutes les variables avant de les utiliser (sauf si elles sont passées en paramètre out). L'initialisation à null est suffisante dans ce cas. –
Aucun de ceux-ci sont votre problème. Le problème est votre nom. Vous définissez matchingActiveLogFiles mais en l'affectant à matchingFiles. .NET met automatiquement par défaut votre tableau de chaînes à zéro si vous ne l'initialisez pas explicitement pendant la définition. – Josh
@Josh mais les règles d'affectation définies C# nécessitent l'initialisation des locales. – phoog