C#帮助将此代码从VB.NET转换为C#

时间:2009-04-14 13:19:03

标签: c# vb.net

任何帮助都会受到赞赏,我正在尝试将下面的代码转换为C#,我从未使用过VB.NET,所以ReDim对我来说是新的。

由于

Dim inFile As System.IO.FileStream
Dim binaryData() As Byte
Dim strFileName As String

strFileName = "C:\MyPicture.jpeg"

inFile = New System.IO.FileStream(strFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)

''//Retrive Data into a byte array variable
ReDim binaryData(inFile.Length)
Dim bytesRead As Long = inFile.Read(binaryData, 0, CInt(inFile.Length))
inFile.Close()

8 个答案:

答案 0 :(得分:10)

代码可以逐字转换,但是有一种更简单的方法来实现它的功能(从文件中读取所有字节),即

var binaryData = File.ReadAllBytes(strFileName);

我个人将strFileName重命名为fileName因为匈牙利符号在.NET代码中不受欢迎......但这是另一回事!

答案 1 :(得分:3)

这很容易转换为C#。

FileStream inFile;
byte[] binaryData;
string strFileName;

strFileName = @"C:\MyPicture.jpeg";

inFile = new System.IO.FileStream(strFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

binaryData = new byte[inFile.Length];
int bytesRead = inFile.Read(binaryData, 0, binaryData.Length);
inFile.Close();

但是有更好的方式来写这个。

string fileName = @"C:\MyPicture.jpeg";
byte[] binaryData = File.ReadAllBytes(fileName);

答案 2 :(得分:2)

我相信ReDim语句只是用于初始化数组:

byte[] binaryData;

binaryData = new byte[inFile.Lenght];

答案 3 :(得分:2)

嗯,最近的翻译将是:

binaryData = new byte[inFile.Length];

因为尚未分配,或者:

Array.Resize(ref binaryData,inFile.Length);

如果先前已分配。但是,代码本身非常不安全(您不应该假设Read读取所有请求的数据);这里更简单的方法是:

binaryData = File.ReadAllBytes(strFileName);

答案 4 :(得分:2)

如果您要将大量VB.NET转换为C#,则可能需要查看VBConversions conversion tool

答案 5 :(得分:1)

ReDim重新分配数组。大多数情况下,这是代码气味:症状或真正想要集合类型而不是数组。这段代码应该做你想要的:

string FileName = @"C:\MyPicture.jpeg";
byte[] binaryData;
long bytesRead;

using (var inFile = new System.IO.FileStream(FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read) )
{
    binaryData = new byte[inFile.Length];
    bytesRead = inFile.Read(binaryData, 0, (int)inFile.Length);
}
//I'm assuming you're actually doing something with each byte array here

答案 6 :(得分:0)

ReDim用于调整大小数组。 (如果需要,您也可以保留内容。此代码不会这样做)

答案 7 :(得分:0)

如果您将来需要再次执行此操作,这是一个永久解决方案。

以下是在线VB到C#代码转换器的链接,反之亦然。一个是here,另一个是here

LinkText1:http://www.developerfusion.com/tools/convert/vb-to-csharp/ LinkText2:http://converter.telerik.com/