0

对于我正在使用 C# 进行的一个小项目,我需要一些帮助。

这是我的代码:

//TO FETCH DIRECTORY TEST
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\Users\Tahmid\Downloads"); 
int count = dir.GetFiles().Length;

我想要它做的只是查看我的“下载”文件夹中有多少文件。

我遇到了两个问题。

  1. 第一个问题是这个词System带有绿色下划线,上面写着“检测到无法访问的代码”。

    起初我认为这可能是由于我缺少一个命名空间引起的,我检查了我的代码,发现我已经有了using System.IO;and using System;。我认为这两个是我需要的目录计数。

    所以我不知道为什么它带有下划线的绿色。xD

  2. 第二个问题是,当我将这两行代码放入我的项目时,它会破坏我代码的另一部分,即:

    case "switch window":
    SendKeys.Send("%{TAB " + count + "}");
    count += 1;
    break;
    

我得到蓝色下划线的“计数”,说“使用未分配的局部变量'计数'”

我很困惑为什么获取目录长度的两行代码会破坏这一点。

4

1 回答 1

2

我们需要查看更多代码才能确定答案……但这里有一些想法可能会有所帮助。

这将导致第一个错误

if (false)
{
   // this code is unreachable... false will never be true.
   //TO FETCH DIRECTORY TEST
   System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\Users\Tahmid\Downloads"); 
   int count = dir.GetFiles().Length;
}

第二个错误是因为您在初始化之前使用了 count ......像这样:

int count;
/// ... more code
case "switch window":
  SendKeys.Send("%{TAB " + count + "}");  // uninitialized use.
  count += 1;
  break;

你需要这个的地方:

int count;
count = 0;  // now count has a value.
/// ... more code
case "switch window":
  SendKeys.Send("%{TAB " + count.ToString() + "}");
  count += 1;
  break;

由第一个引起的第二个很清楚 - 如果代码永远无法访问,那么它将永远不会将 count 设置为一个值,因此 count 会被初始化。

于 2013-07-30T02:39:52.933 回答