C#相当于VB6'Type'

3 c# vb6 struct types

我试图将一个相当大的源代码从VB6移植到C#.这不是一件容易的事 - 特别是对于我来说是C#.net的新手.此源使用大量Windows API以及许多类型.我知道,有没有等同于C#VB6的类型,但我敢肯定有达到相同的结果的方法.我将在下面发布一些代码以进一步解释我的请求.

VB6:

Private Type ICONDIRENTRY
bWidth          As Byte
bHeight         As Byte
bColorCount     As Byte
bReserved       As Byte
wPlanes         As Integer
wBitCount       As Integer
dwBytesInRes    As Long
dwImageOffset   As Long
End Type

Dim tICONDIRENTRY()     As ICONDIRENTRY

ReDim tICONDIRENTRY(tICONDIR.idCount - 1)

For i = 0 To tICONDIR.idCount - 1
    Call ReadFile(lFile, tICONDIRENTRY(i), Len(tICONDIRENTRY(i)), lRet, ByVal 0&)
Next i
Run Code Online (Sandbox Code Playgroud)

我尝试过使用结构和类 - 但到目前为止还没有运气.

我希望看到这种类型结构的转换,但如果有人知道如何转换整个事物,那将是令人难以置信的有用的.我已经在这个小项目上花了无数个小时.

如果它有任何区别,这仅用于教育目的.

感谢您提前提供任何帮助,Evan

rec*_*ive 10

struct是等价的.你这样表达的意思是:

struct IconDirEntry {
    public byte Width;
    public byte Height;
    public byte ColorCount;
    public byte Reserved;
    public int Planes;
    public int BitCount;
    public long BytesInRes;
    public long ImageOffset;
}
Run Code Online (Sandbox Code Playgroud)

你声明一个这样的变量:

IconDirEntry entry;
Run Code Online (Sandbox Code Playgroud)

通常,在C#中,不使用类型前缀,也不使用全部大写,除了常量. structs是C#中的值类型,因此这意味着它们总是按值传递.看起来你正在将它们传递给一个填充它们的方法.如果您想要这种用法,则必须使用类.

  • VB6中的整数在C#中很短,而VB6中的长整数在C#中是整数.你的结构不太正确. (6认同)