Visual Basic 6.0转换为VB.NET声明

3

我该如何在VB.NET中声明"as any",或者等价的语法是什么?

5个回答

4
您可以使用以下代码实现类似的功能:

Dim var as Object

这不完全等同于VB6中的任何类型(它将值存储在Variant中),但是您可以将任何类型的变量作为Object存储,尽管需要装箱。

3

As Any 必须是指向 Windows API 声明,因为它不能用于变量声明。您可以使用重载:只需为每个不同的数据类型重复声明,您希望传递哪种数据类型就使用哪种声明。VB.NET 会挑选与您在调用中传递的参数匹配的那个声明。

这比 VB6 中的 As Any 更好,因为编译器仍然可以进行类型检查。


3

VB.NET不支持“as any”关键字,VB.NET是一种强类型语言,但您可以在VB中使用隐式类型(与.NET 3.5一起)

Dim fred =“Hello World”将隐式地将fred类型定义为字符串变量。如果您想要仅保留一个值,而无法在设计时知道其类型,则可以将变量声明为对象(所有对象的母亲)。请注意,这通常会引起代码审阅者的警告,因此请确保您有充分的理由 :-)


如果启用了Option Strict选项,声明变量时必须指定类型。 - Kogitsune

1

我猜你在转换WinAPI声明时遇到了问题。有时,如果你将变量声明为字符串或整数,因为这是返回值的实际类型,你就可以轻松解决问题。

你也可以尝试使用“马歇尔”技术:

<MarshalAsAttribute(UnmanagedType.AsAny)> ByRef buff As Object

0

VB.NET不支持"As Any"关键字。您需要明确指定类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接