In VB6, I can write something like this:
Private Sub MyMethod(ByVal someParameter Variant)
If IsObject(someVariable) Then
'do stuff
Else
'do something else
End If
End Sub
According to the modern VBA docs, which I realise aren't necessarily an exact match with their VB6 counterpart, this function behaves as follows:
Returns a Boolean value indicating whether an identifier represents an object variable.
The docs also remark:
IsObject is useful only in determining whether a Variant is of VarType vbObject. This could occur if the Variant actually references (or once referenced) an object, or if it contains Nothing.
If I have an equivalent function in C#, which takes a parameter of type dynamic
, what is the C# equivalent for IsObject?
The closest thing to an 'Object' in VBA is a reference type. You can use the following methods:
These methods combined together would help you migrate that piece of code you have. Note however, that you need to have a strong understanding of types in C# - otherwise you will end up with code doing less or more than you wanted it to do.
Personally having decades of experience with VB6 and more than a decade in C# I would strongly reconsider my reasons for using these. Unlike in VBA, you extremely rarely need to stray away from a strongly typed syntax, i.e. the one where the at least basic properties of your variables are known in advance, such as whether it's a reference or value type.