是否可以将一小段VB.NET代码转换为C#?

问题描述 投票:0回答:1

我想将几行vb.net代码更改为c#代码,因为代码太旧了。是否可以在不破坏结构的情况下转换几行代码。

例如,在这段代码中

Restart:
        sIssCo = ""
        On Error GoTo ErrorRtn
        sErrorMsg = "Unable to activate Word."
        System.Windows.Forms.Application.DoEvents()
        oWord.Visible = True
        oWord.StatusBar = "Initiating Word Merge..."
        oWord.System.Cursor = Microsoft.Office.Interop.Word.WdCursorType.wdCursorWait
        oWord.StatusBar = "Deleting previous temp docs..."
        On Error GoTo ErrorRtn
        If Dir(gsTempFileDir & "*.doc") <> "" Then
        oFileSys.DeleteFile(gsTempFileDir & "*.doc")
        End If

我只想将下面的行更改为c#

If Dir(gsTempFileDir & "*.doc") <> "" Then
    oFileSys.DeleteFile(gsTempFileDir & "*.doc")
End If

我已经尝试过下面的代码。

if (Directory.GetFiles(gsTempFileDir.FullName, "*.doc").Length > 0)
{
    foreach (var file in gsTempFileDir.GetFiles("*.doc"))
    {
        file.Delete();
    }
}

它不支持,因为代码在 vb.net 中,我还添加了一些组件,例如 Imports

Microsoft.Office.Interop.Word
Imports System.IO.Directory
Imports System.IO.File

为了使其兼容 C# 代码,它也不起作用。还有其他可能的方式像这样

System.IO.oFileSys.delete(gsTempFileDir & "*.doc")
吗?

c# vb.net
1个回答
0
投票

您为什么要编写 C# 代码?只需编写 VB.NET 代码,但要正确编写,而不是像 VB6 那样编写。这个:

if (Directory.GetFiles(gsTempFileDir.FullName, "*.doc").Length > 0)
{
    foreach (var file in gsTempFileDir.GetFiles("*.doc"))
    {
        file.Delete();
    }
}

在 VB 中可以写得几乎完全相同:

If Directory.GetFiles(gsTempFileDir.FullName, "*.doc").Length > 0 Then
    For Each file In gsTempFileDir.GetFiles("*.doc")
        file.Delete()
    Next
End If

当然,这有它自己的问题,但这就是你写的。如果你想正确地做到这一点,为什么要调用

GetFiles
两次呢?只需调用一次并循环结果即可。如果结果数组为空,则循环将不执行任何操作。不需要
If
声明。您可以致电
Directory.GetFiles

For Each filePath In Directory.GetFiles(gsTempFileDir.FullName, "*.doc")
    File.Delete(filePath)
Next

DirectoryInfo.GetFiles
:

For Each file In gsTempFileDir.GetFiles("*.doc")
    file.Delete()
Next
© www.soinside.com 2019 - 2024. All rights reserved.