因此,我正致力于将此代码从VB.NET转换为C#:
Public Class Form1
Const filesplit As String = "|split|"
Dim stub, opt() As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
On Error Resume Next
FileOpen(1, Application.ExecutablePath, OpenMode.Binary, OpenAccess.Read, OpenShare.Shared)
stub = Space(LOF(1))
FileGet(1, stub)
FileClose(1)
opt = Split(stub, filesplit)
End Sub
End Class
我使用过一系列在线转换器,但它们并不适合我。
我该怎么办?我试图理解VB.NET源代码,以便我可以使用它。
答案 0 :(得分:1)
使用File.Open。那应该能得到你想要的东西。
答案 1 :(得分:1)
您的VB代码基本上是这样做的:
// The using clause ensures the StreamReader is properly disposed after the closing block.
using (StreamReader sr = File.OpenText(Application.ExecutablePath))
{
stub = sr.ReadToEnd();
opt = stub.Split(filesplit).ToArray();
}
这假设filesplit是char,string或类似Environment.NewLine
的东西答案 2 :(得分:1)
这些方法位于Microsoft.VisualBasic
命名空间。
所以你可以在项目中添加对的引用,然后使用几乎完全相同的代码,并对所使用的方法进行少量额外限定:
using Microsoft.VisualBasic; //add this statement
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string filesplit = "|split|";
string stub;
string[] opt;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
FileSystem.FileOpen(1, Application.ExecutablePath, OpenMode.Binary, OpenAccess.Read, OpenShare.Shared);
stub = Strings.Space(Convert.ToInt32(FileSystem.LOF(1)));
FileSystem.FileGet(1, ref stub);
FileSystem.FileClose(1);
opt = Strings.Split(stub, filesplit);
}
}
}
但是你应该在你的VB.NET和C#代码中使用File.xxx
命名空间中的System.IO
方法,但这将使它适用于你。
答案 3 :(得分:0)
基本上你会使用:
Dim content = File.ReadAllText("c:\temp\MyTest.txt")
但是使用它会更正确:
Dim path As String = "c:\temp\MyTest.txt"
If File.Exists(path) Then
Dim content = File.ReadAllText(path)
Rem do something with content
End If