VB函数IsObject的C#对应的是什么?

问题描述 投票:2回答:1

在VB6中,我可以写这样的东西。

Private Sub MyMethod(ByVal someParameter Variant)
    If IsObject(someVariable) Then
        'do stuff
    Else
        'do something else
    End If
End Sub

根据 现代VBA文档我意识到这些函数不一定与VB6的对应函数完全匹配,这个函数的行为如下。

返回一个布尔值,表示一个标识符是否代表一个对象变量。

文档中还提到。

IsObject仅在确定一个Variant是否为VarType vbObject时有用。如果Variant实际上引用了(或曾经引用过)一个对象,或者如果它包含了Nothing,那么就会出现这种情况。

如果我在 C# 中有一个等价的函数,它的参数类型是 dynamic在VB6中,我可以写这样的东西:"IsObject "是什么?

c# vb6-migration
1个回答
2
投票

在VBA中,最接近于 "对象 "的东西是一种引用类型。你可以使用以下方法。

IsPrimitive

IsValueType

是类

这些方法结合在一起会帮助你迁移你的那段代码。但是,请注意,你需要对以下方法有深刻的理解 在C#中的类型 - 否则,你最终会有代码做 较少更多 比你希望它做的更多。

就我个人而言,我在VB6上有几十年的经验,在C#上有十多年的经验,我会强烈地重新考虑我使用这些的理由。与VBA不同的是,你极少需要偏离强类型化的语法,也就是事先知道你的变量的至少基本属性的语法,比如它是引用还是值类型。

© www.soinside.com 2019 - 2024. All rights reserved.