2

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

4

5 回答 5

4

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

Dim var as Object

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

于 2008-09-16T07:58:35.300 回答
3

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

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

于 2008-09-16T08:03:33.183 回答
3

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

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

于 2008-09-17T11:38:26.730 回答
1

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

您也可以尝试编组:

<MarshalAsAttribute(UnmanagedType.AsAny)> ByRef buff 作为对象
于 2008-09-16T12:40:43.827 回答
0

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

于 2008-09-16T07:54:31.037 回答