将此代码从VB转换为C#

时间:2014-04-10 12:52:58

标签: c# vb.net

当我从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");

我想知道我的错误在哪里?

5 个答案:

答案 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");