foreach 语句中需要类型和标识符 csharp 中的错误

Pet*_*ngs 3 c# vb.net

我正在将这段代码的 VB.net 转换为 C#:

Dim files() As String
files = Directory.GetFiles("E:\\text", "*.txt") 
Dim filename As String
Dim file As String
For Each file In files
filename = Path.GetFileName(file)
Run Code Online (Sandbox Code Playgroud)

我在 C# 中尝试过,但出现错误

foreach 语句中需要类型和标识符 csharp 中的错误

string[] files;
files = Directory.GetFiles("E:\\text", "*.txt");
string[] filenameMove;
string filename;
string file;

foreach (file  in files)
  filename = Path.GetFileName(file);
Run Code Online (Sandbox Code Playgroud)

Bra*_*don 6

尝试

foreach(var file in files)
Run Code Online (Sandbox Code Playgroud)

您需要指定要循环或使用的类型var

不过,您已经声明了一个名为 file 的变量。所以你必须使用不同的名称

foreach(var f in files)
{
  filename = Path.GetFileName(f);
}
Run Code Online (Sandbox Code Playgroud)

(虽然按照你的逻辑,你只是在每次迭代时覆盖文件名,所以除非你只想要最后一个文件名,否则我不确定它的目的是什么)。

  • 另一种说法是:在 C# 中,`foreach` 语句不能(重新)使用已在“外部”作用域中声明的变量作为其迭代变量。 (2认同)