【发布时间】:2020-04-30 08:04:55
【问题描述】:
在 VB6 中,我可以这样写:
Private Sub MyMethod(ByVal someParameter Variant)
If IsObject(someVariable) Then
'do stuff
Else
'do something else
End If
End Sub
根据the modern VBA docs,我意识到这不一定与他们的VB6对应物完全匹配,这个函数的行为如下:
返回一个布尔值,指示标识符是否代表对象变量。
文档还说:
IsObject 仅在确定 Variant 是否属于 VarType vbObject 时有用。如果 Variant 实际引用(或曾经引用)一个对象,或者它不包含任何内容,则可能会发生这种情况。
如果我在 C# 中有一个等效函数,它接受 dynamic 类型的参数,那么 IsObject 的 C# 等效函数是什么?
【问题讨论】:
-
C# 是静态类型的。变量类型是否为对象应该很明显。通过
if (someVariable != null)可以测试该值是否为空 -
知道
'Do stuff是什么会很有趣——可能是在.NET 世界中,无论someVariable是什么,执行它都是相关的——或者需要完全不同的测试仅与IsObject有相似之处。 -
@Damien_The_Unbeliever 好点。我自己也有类似的认识;问题的上下文不充分,无法合理地尝试回答。我会进行编辑。
标签: c# vb6-migration