我想将几行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 代码,但要正确编写,而不是像 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