【问题标题】:Best way to convert a vb6 "Type" (struct) to c#将 vb6“类型”(结构)转换为 c# 的最佳方法
【发布时间】:2018-10-19 13:32:35
【问题描述】:

我正在将 VB6 代码转换为 C#。我正在努力将以下 VB6 类型转换为 C#

Public Type XY_DATA
    InData(0 To 3) As Single
    PrevData(0 To 3) As Single
    OutData(0 To 3) As Single
    ZeroData(0 To 3) As Single
    StatXY(0 To 3) As Single
    DynXY(0 To 3) As Single
    UnbXY(0 To 3) As Single
    StdDev(0 To 3) As Single
End Type

【问题讨论】:

  • 幸运的是,您的数组下限为零,这与 C# 中的数组相同。这将使这种结构的使用相似,而不会引入一个错误的机会。

标签: c# vb6 vb6-migration


【解决方案1】:

使用与 Visual Studio 2008 捆绑的 Visual Basic 更新向导将 VB 代码转换为 VB.Net。然后,将VB.Net(类似于C#)转换为C#。

此外,Redgate Reflector 可以将 .Net 程序集转换为您选择的语言,并取得了不同程度的成功。因此,如果您将 VB 代码转换为 VB.Net 并进行编译,您可能能够自动生成等效的 C# 代码。

这是您迁移和移植的代码。

using Microsoft.VisualBasic;

public struct XY_DATA
{
    [VBFixedArray(3)]
    public Single[] InData;
    [VBFixedArray(3)]
    public Single[] PrevData;
    [VBFixedArray(3)]
    public Single[] OutData;
    [VBFixedArray(3)]
    public Single[] ZeroData;
    [VBFixedArray(3)]
    public Single[] StatXY;
    [VBFixedArray(3)]
    public Single[] DynXY;
    [VBFixedArray(3)]
    public Single[] UnbXY;
    [VBFixedArray(3)]
    public Single[] StdDev;

    // Note: "Initialize" must be called to initialize instances of this structure. 
    public void Initialize()
    {
        InData = new Single[4];
        PrevData = new Single[4];
        OutData = new Single[4];
        ZeroData = new Single[4];
        StatXY = new Single[4];
        DynXY = new Single[4];
        UnbXY = new Single[4];
        StdDev = new Single[4];
    }
}

【讨论】:

  • 我认为VBFixedArray之类的属性只有在结构上使用FileSystem.FilePut之类的某些功能时才需要。否则我认为它们是多余的(尽管无害)
  • 将 VB6 类型的等价物创建为 C# 类(不一定是结构)也可能有效。这取决于它将用于什么。在 VB6 中创建类不方便,因此在某些情况下人们使用类型来代替。此外,旧版本的 VB (
  • 是的,类是更好的选择,但在这种情况下,原始类型是值类型,示例(由 VBUW 生成)显示该类型已移植到 C#。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2023-04-02
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多