Coincé dans la fonction et les booléens

J’ai une fonction appelée firstRun() , à l’intérieur de celle-ci, j’ai deux filesDeleted dirsDeleted définis, filesDeleted et dirsDeleted , dirsDeleted .

Aussi à l’intérieur de la fonction que j’ai if (filesDeleted == true && dirsDeleted == true) {
Une erreur se produit lorsque j’essaie de déboguer une application – L’ Use of unassigned local variable 'filesDeleted' et de l’ Use of unassigned local variable 'dirsDeleted' essayé beaucoup de solutions différentes, mais ne fonctionnait pas du tout.

Voici le code:

 private void firstRun(bool forceDelete) { ssortingng Path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "myLauncher"); ssortingng[] Files = Directory.GetFiles(Path); ssortingng[] Dirs = Directory.GetDirectories(Path); bool filesDeleted; bool dirsDeleted; if (forceDelete == true) { if (Directory.Exists(Path)) { ssortingng lastFile = Files[Files.Length - 1]; foreach (ssortingng file in Files) { if (file == lastFile) { filesDeleted = true; MessageBox.Show("test"); } File.Delete(file); } ssortingng lastDir = Dirs[Dirs.Length - 1]; foreach (ssortingng dir in Dirs) { if (dir == lastDir) { dirsDeleted = true; MessageBox.Show("test2"); } Directory.Delete(dir, true); } if (filesDeleted == true && dirsDeleted == true) { //code when everything deleted } } else { Directory.CreateDirectory(Path); } } 

Change ton

 bool filesDeleted; bool dirsDeleted; 

à

 bool filesDeleted = false; bool dirsDeleted = false; 

Ce sont des variables locales et elles doivent être vérifiées avant de les utiliser.

A partir de 5.1.7 Local variables

Une variable locale n’est pas automatiquement initialisée et n’a donc aucune valeur par défaut . Aux fins de la vérification de l’affectation définie, une variable locale est considérée initialement non affectée.

Contrairement aux variables de membre de classe, les variables locales dans les méthodes n’ont pas de valeur par défaut et doivent être définitivement affectées avant d’essayer de les lire:

donc vous devez utiliser

 bool fileDeleted = false; bool dirsDeleted = false; 

au lieu de

 bool filesDeleted; bool dirsDeleted;