C# 相当于 VB6 'Type'

标签 c# vb6 types struct

我正在尝试将一个相当大的源代码从 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

我尝试过使用结构和类 - 但到目前为止运气不好。

我希望看到此 Type 结构的转换,但如果有人知道如何转换整个结构,那将非常有帮助。我已经在这个小项目上花费了无数时间。

如果有任何不同,这仅用于教育目的。

提前感谢您的帮助, 埃文

最佳答案

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;
}

你像这样声明一个变量:

IconDirEntry entry;

通常,在 C# 中,不使用类型前缀,也不全部大写,常量可能除外。 struct 是 C# 中的值类型,这意味着它们始终按值传递。看起来您正在将它们传递给填充它们的方法。如果您想要这种用法,则必须使用类。

关于C# 相当于 VB6 'Type',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906630/

相关文章:

types - CF9 中的 QueryNew() 数据类型

c# - 在 C# 中使用 while 循环搜索数组?

vba - VB/VBA If..ElseIf..Then,其中每个 ElseIf..Then 位于一行

vba - 获取 Collection 对象上项目的键

vb6 - 如何处理 VB6 .vbp 文件引用更改

Powershell 参数 block 接受 [PSTypeName ("MyType")] 数组

c# - 将按钮扩展到 UWP 中的标题栏

C# Xamarin Forms 从 ViewModel 填充 CollectionView 始终为 null

c# - C# 中 TextBlock 的 WPF 最大宽度

android - 无法在 ExpandableListView 子项中键入 EditText