繁体   English   中英

Visual Basic 6.0 到 VB.NET 声明

[英]Visual Basic 6.0 to VB.NET declaration

我如何在 VB.NET 中声明“任意”,或者什么是等效的?

您可以获得的最接近的是:

Dim var as Object

它与 VB6 的 Any(将值存储在 Variant 中)并不完全相同,但您可以将任何类型的变量存储为 Object,尽管已装箱。

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

Dim fred = "Hello World" 将隐式类型 fred 作为字符串变量。 如果您只想保存一个在设计时不知道其类型的值,那么您可以简单地将变量声明为 object(所有对象之母)注意,这通常是代码审查者的危险信号,因此请确保你有充分的理由准备好:-)

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

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

我想您在转换 WinAPI 声明时遇到问题。 有时,如果您只是将变量声明为字符串或 integer,您就可以逃脱惩罚,因为这是返回值的真实类型。

您也可以尝试编组:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM