VB.Net/Language Basics/As — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 16:40, 26 мая 2010
AS, IS and cast
Imports System
Public Class MainClass
Shared Sub Main()
Dim doc As New Document("Test Document")
" only cast if it is safe
If TypeOf doc Is IStorable Then
Dim isDoc As IStorable = doc
isDoc.Read( )
Else
Console.WriteLine("Could not cast to IStorable")
End If
" this test will fail
If TypeOf doc Is ICompressible Then
Dim icDoc As ICompressible = doc
icDoc.rupress( )
Else
Console.WriteLine("Could not cast to ICompressible")
End If
End Sub
End Class
Interface IStorable
Sub Read( )
Sub Write(ByVal obj As Object)
Property Status( ) As Integer
End Interface
Interface ICompressible
Sub Compress( )
Sub Decompress( )
End Interface
Public Class Document
Implements IStorable
Public Sub New(ByVal s As String)
Console.WriteLine("Creating document with: {0}", s)
End Sub
Public Sub Read( ) Implements IStorable.Read
Console.WriteLine("Implementing the Read Method for IStorable")
End Sub
Public Sub Write(ByVal o As Object) Implements IStorable.Write
Console.WriteLine( _
"Implementing the Write Method for IStorable")
End Sub
Public Property Status( ) As Integer Implements IStorable.Status
Get
Return Status
End Get
Set(ByVal Value As Integer)
Status = Value
End Set
End Property
Private myStatus As Integer = 0
End Class
"Is" and "As" operator for a Class
Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
Dim doc As New Document("Test Document")
" only cast if it is safe
If TypeOf doc Is IStorable Then
Dim isDoc As IStorable = doc
isDoc.Read( )
Else
Console.WriteLine("Could not cast to IStorable")
End If
" this test will fail
If TypeOf doc Is ICompressible Then
Dim icDoc As ICompressible = doc
icDoc.rupress( )
Else
Console.WriteLine("Could not cast to ICompressible")
End If
End Sub
End Class
Interface IStorable
Sub Read( )
Sub Write(ByVal obj As Object)
Property Status( ) As Integer
End Interface "IStorable
" here"s the new interface
Interface ICompressible
Sub Compress( )
Sub Decompress( )
End Interface "ICompressible
" Document implements both interfaces
Public Class Document
Implements IStorable
" the document constructor
Public Sub New(ByVal s As String)
Console.WriteLine("Creating document with: {0}", s)
End Sub "New
" implement IStorable
Public Sub Read( ) Implements IStorable.Read
Console.WriteLine("Implementing the Read Method for IStorable")
End Sub "Read
Public Sub Write(ByVal o As Object) Implements IStorable.Write
Console.WriteLine( _
"Implementing the Write Method for IStorable")
End Sub "Write
Public Property Status( ) As Integer Implements IStorable.Status
Get
Return Status
End Get
Set(ByVal Value As Integer)
Status = Value
End Set
End Property
" hold the data for IStorable"s Status property
Private myStatus As Integer = 0
End Class "Document