¿Es posible convertir una pequeña porción de código VB.NET a C#? [cerrado]
Quiero cambiar algunas líneas de código vb.net a código C# ya que el código es muy antiguo. ¿Será posible convertir algunas líneas de código sin alterar la estructura?
Por ejemplo, en este código
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
Sólo quiero cambiar las líneas siguientes a C#
If Dir(gsTempFileDir & "*.doc") <> "" Then
oFileSys.DeleteFile(gsTempFileDir & "*.doc")
End If
Probé el siguiente código.
if (Directory.GetFiles(gsTempFileDir.FullName, "*.doc").Length > 0)
{
foreach (var file in gsTempFileDir.GetFiles("*.doc"))
{
file.Delete();
}
}
No es compatible porque el código está en vb.net. También agregué algunos ensamblajes como Importaciones.
Microsoft.Office.Interop.Word
Imports System.IO.Directory
Imports System.IO.File
para hacerlo compatible con el código C#, tampoco funcionaba. ¿ Alguna otra forma posible System.IO.oFileSys.delete(gsTempFileDir & "*.doc")
como esta?
¿Por qué querrías escribir código C#? Simplemente escriba el código VB.NET pero escríbalo correctamente, en lugar de como si fuera VB6. Este:
if (Directory.GetFiles(gsTempFileDir.FullName, "*.doc").Length > 0)
{
foreach (var file in gsTempFileDir.GetFiles("*.doc"))
{
file.Delete();
}
}
se puede escribir casi exactamente igual en VB:
If Directory.GetFiles(gsTempFileDir.FullName, "*.doc").Length > 0 Then
For Each file In gsTempFileDir.GetFiles("*.doc")
file.Delete()
Next
End If
Por supuesto, eso tiene sus propios problemas, pero eso es lo que escribiste. Si quieres hacerlo correctamente, ¿por qué llamar GetFiles
dos veces? Simplemente llámelo una vez y recorra los resultados. Si la matriz resultante está vacía, el bucle no hará nada. No hace falta una If
declaración. Puedes llamar Directory.GetFiles
:
For Each filePath In Directory.GetFiles(gsTempFileDir.FullName, "*.doc")
File.Delete(filePath)
Next
o DirectoryInfo.GetFiles
:
For Each file In gsTempFileDir.GetFiles("*.doc")
file.Delete()
Next