VB.Net/Language Basics/As — различия между версиями

Материал из VB Эксперт
Перейти к: навигация, поиск
м (1 версия)
 
м (1 версия)
 
(нет различий)

Текущая версия на 12:42, 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