当我从VB转换此代码时:
Dim r As DialogResult = FldSource.ShowDialog()
If r = Windows.Forms.DialogResult.OK Then
lstPath.Items.Clear()
lblSoLuong.Text = lstPath.Items.Count
txtPath.Text = FldSource.SelectedPath
Dim tenfile, FS() As FileInfo
Dim di As New DirectoryInfo(txtPath.Text)
FS = di.GetFiles("*.txt")
For Each tenfile In FS
lstPath.Items.Add(tenfile.FullName)
Next
lblSoLuong.Text = lstPath.Items.Count
End If
到C#:
try
FolderBrowserDialog FldSource = new FolderBrowserDialog();
DialogResult r = FldSource.ShowDialog();
if ( r == DialogResult.OK )
lst_Path.Items.Clear();
lbl_Soluong.Text = lst_Path.Items.Count.ToString();
txt_Path.Text = FldSource.SelectedPath;
FileInfo tenfile, FS();
DirectoryInfo di = new DirectoryInfo(txt_Path.Text);
FS= di.GetFiles(".txt");
我在这一行得到了错误:
FS= di.GetFiles(".txt");
我想知道我的错误在哪里?
答案 0 :(得分:2)
注意您在VB中使用的搜索模式:
FS = di.GetFiles("*.txt")
在C#中:
FS = di.GetFiles(".txt");
从VB到C#的更改不会改变方法的调用方式或传递给它们的值。您仍然需要发送相同的搜索模式。 (事实上,即使在VB版本中,
内部工作没有区别,只是在你调用这些内部工作的语法中。
此外,我不能100%确定你在这里尝试做什么:
GetFiles()
如果FileInfo tenfile, FS();
应该是一个数组,那么你可以这样做:
FS
虽然您可以使用隐式类型声明它更容易,甚至不需要声明语句:
FileInfo tenfile;
FileInfo[] FS;
答案 1 :(得分:2)
您无法在c#
中以这种方式声明变量FileInfo tenfile, FS();
如果需要FileInfo tenFile和FileInfo FS数组,请使用
FileInfo tenfile;
FileInfo[] FS;
答案 2 :(得分:1)
我认为你要做的是创建一个FileInfo
的数组。在这种情况下,而不是:
FileInfo tenfile, FS();
你需要这个:
FileInfo tenfile;
FileInfo[] FS;
另外,正如其他人所指出的那样,您错过了*
搜索字符串中的GetFiles
,但这不会给您一个错误,它只是没有做你想要的。
答案 3 :(得分:0)
你错过了*
FS = di.GetFiles("*.txt");
答案 4 :(得分:0)
不应该是这样的:
FS = di.GetFiles(" * .txt");