【发布时间】:2012-03-06 06:32:25
【问题描述】:
我有一些VB6代码需要迁移到VB.NET,想查询一下这行代码,看看有没有办法在.NET中实现
Dim strChar1 As String * 1
Intellisense 不断告诉我预期语句结束。
【问题讨论】:
-
你有一个固定长度的字符串。如何在 VB.NET 中声明一个被讨论here。
-
@Jay:我也看到了,但我个人会回避 VBFixedStringAttribute。它是 Microsoft.VisualBasic 命名空间中的许多东西之一,它是 VB6 的继承,以便在 .NET 首次出现时更容易转换到 VB.NET,但恕我直言,最好避免该命名空间中的大部分内容,而是选择等效的“标准”.NET Framework 功能。我的意思是,他们甚至使用
On Error、Goto和Resume保留旧的 VB6 错误处理模型,即使异常是处理 .NET 代码中错误的预期(并且更强大)方式;-)跨度> -
@Mike - 我还没有真正研究过 VBFixedStringAttribute 类以确定使用它是否是一个坏主意,但我相信这个问题是我所链接的问题的欺骗。我也认为你的答案比那里找到的更好,所以给你+1。 (当然我同意你的观点,在 VB.NET 应用程序中使用旧的 VB6 错误处理风格是一个糟糕的选择!)
-
@Mike 为什么要避开那个命名空间?它只是一个 .Net 程序集,就像任何其他程序一样!它是 VB 的一部分,没有理由不使用它。它不会消失。不过,现在要避免使用 Microsoft.VisualBasic.Compatibility 程序集。
-
@Chris:的确,
Microsoft.VisualBasic.Compatibility更糟糕,但Microsoft.VisualBasic命名空间可能会让人头疼。部分问题在于它被设计为与 VB6 的工作方式非常相似,以至于当它实际上不以相同的方式工作时会让人感到困惑。例如,他们甚至重新实现了大多数 VB6 日期和时间函数(如DateSerial和朋友),即使 .NET 框架已经有类来完成所有这些事情。另一个例子:例如,当一半代码使用旧式ErrObject而一半使用 .NET 异常时,会让人感到困惑。
标签: vb.net string vba vb6 vb6-migration