.NET has a more strict typing than VB6
So you must check in some circumstances if your object implements an interface
or not.
So I had used the as and is operators in C# but I did not know
how to do that.
I did I little research and I discovered some things about casting operators for
VB.NET
Operator |
Example |
Observations |
CType |
Dim testNumber
As Long
= 1000
' The following line of code sets testNewType
to 1000.0.
Dim testNewType
As Single
= CType(testNumber, Single)
|
Throws InvalidCastException or OverflowException It could
be less eficient due to VB.Net helper routines.
This is a Narrowing and Widening operator.
It can be overloaded
Public
Structure digit
Private dig
As Byte
Public
Sub New(ByVal
b As Byte)
If
(b OrElse b > 9)
Then Throw
New _
System.ArgumentException("Argument outside
range for Byte")
Me.dig
= b
End
Sub
Public
Shared Widening Operator CType(ByVal
d As digit)
As Byte
Return
d.dig
End Operator
Public
Shared Narrowing Operator CType(ByVal
b As Byte)
As digit
Return
New digit(b)
End Operator
End Structure
|
DirectCast |
Dim f
As New
System.Windows.Forms.Form
Dim c As
System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f,
System.Windows.Forms.Control)
|
Throws InvalidCastException. Is more
efficient than CType because it does not depend on the Visual
Basic helper runtime functions. It can even detect some errors as
invalid casts during compile time
However it requires a relationship of inheritance of implementation
For example:
Dim q As
Object = 2.37
Dim i As
Integer = CType(q,
Integer)
' The following conversion fails at run time
Dim j As
Integer =
DirectCast(q, Integer)
The run-time type of q is Double. CType
succeeds because Double can be converted to Integer.
However, the first DirectCast fails at run time because the
run-time type of Double has no inheritance relationship with
Integer, even though a conversion exists
|
TryCast |
Dim
obj As MyType = TryCast(obj, MyType)
If obj
Is Nothing
Then
' Object could not be cast
Else
' Object was casted
End If |
Throws no exceptions. |
All this information has been taken from the MSDN site. This is just a quick
summary. For more information see:
Type Conversion Functions
Conversion Functions (Visual Basic)
Widening and Narrowing Conversions
Implicit and Explicit Conversions