-2

我有一个名为 的函数firstRun(),在其中我有两个定义的布尔值filesDeleteddirsDeleted.

在功能内部我也有if (filesDeleted == true && dirsDeleted == true) {
当我尝试调试应用程序时出现错误 -Use of unassigned local variable 'filesDeleted'Use of unassigned local variable 'dirsDeleted'尝试了很多不同的解决方案,但根本没有用。

这是代码:

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);
      }
  }
4

2 回答 2

1

改变你的

bool filesDeleted;
bool dirsDeleted;

bool filesDeleted = false;
bool dirsDeleted = false;

这些是局部变量,必须在使用它们之前进行分配。

5.1.7 Local variables

局部变量不会自动初始化,因此没有默认值。出于明确分配检查的目的,局部变量最初被认为是未分配的。

于 2013-08-24T13:56:54.673 回答
1

与类成员变量不同,方法中的局部变量没有默认值,在尝试读取它们之前必须明确分配:

所以你需要使用

bool fileDeleted = false;
bool dirsDeleted = false;

代替

bool filesDeleted;
bool dirsDeleted;
于 2013-08-24T13:54:04.103 回答