Search code examples
c#functionbooleanunassigned-variable

Stuck in function and booleans


I have function called firstRun(), inside of it I have two defined booleans filesDeleted and dirsDeleted.

Also inside in function I have if (filesDeleted == true && dirsDeleted == true) {
When I try to debug application I get error - Use of unassigned local variable 'filesDeleted' and Use of unassigned local variable 'dirsDeleted' tried a lot of different solutions, did not work at all.

Here's the code:

private void firstRun(bool forceDelete) {
  string Path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "myLauncher");
  string[] Files = Directory.GetFiles(Path);
  string[] Dirs = Directory.GetDirectories(Path);
  bool filesDeleted; 
  bool dirsDeleted;

  if (forceDelete == true)
  {
      if (Directory.Exists(Path))
      {
          string lastFile = Files[Files.Length - 1];
          foreach (string file in Files)
          {
              if (file == lastFile)
              {
                  filesDeleted = true;
                  MessageBox.Show("test");
              }
              File.Delete(file);
          }
          string lastDir = Dirs[Dirs.Length - 1];
          foreach (string 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);
      }
  }

Solution

  • Change your

    bool filesDeleted;
    bool dirsDeleted;
    

    to

    bool filesDeleted = false;
    bool dirsDeleted = false;
    

    These are local variables and they must be assinged before use them.

    From 5.1.7 Local variables

    A local variable is not automatically initialized and thus has no default value. For the purpose of definite assignment checking, a local variable is considered initially unassigned.