VB.Net Tutorial/Operator/Is — различия между версиями
Admin (обсуждение | вклад) м (1 версия)  | 
				Admin (обсуждение | вклад)  м (1 версия)  | 
				
(нет различий) 
 | |
Текущая версия на 12:54, 26 мая 2010
Demonstrate "is a" relationship
Class Tester
   
   Shared Sub Main()
      Dim point1, point2 As Point
      Dim circle1, circle2 As Circle
      point1 = New Point(30, 50)
      circle1 = New Circle(120, 89, 2.7)
      Console.WriteLine("Point point1: " & point1.ToString() & _
         vbCrLf & "Circle circle1: " & circle1.ToString())
      point2 = circle1
      Console.WriteLine("Circle circle1 (via point2): " & point2.ToString())
      circle2 = CType(point2, Circle) " allowed only via cast
      Console.WriteLine("Circle circle1 (via circle2): " & circle2.ToString())
      If (TypeOf point1 Is Circle) Then
         circle2 = CType(point1, Circle)
         Console.WriteLine("cast successful")
      Else
         Console.WriteLine("point1 does not refer to a Circle")
      End If
   End Sub
End Class 
Public Class Point
   Private mX, mY As Integer
   Public Sub New()
   End Sub " New
   Public Sub New(ByVal xValue As Integer, _
      ByVal yValue As Integer)
   End Sub " New
   Public Overrides Function ToString() As String
      Return "[" & mX & ", " & mY & "]"
   End Function " ToString
End Class
Public Class Circle
   Inherits Point 
   Private mRadius As Double
   Public Sub New()
   End Sub " New
   Public Sub New(ByVal xValue As Integer, _
      ByVal yValue As Integer, ByVal radiusValue As Double)
      MyBase.New(xValue, yValue)
   End Sub " New
   Public Overrides Function ToString() As String
      Return "Center= " & MyBase.ToString() & _
         "; Radius = " & mRadius
   End Function " ToString
End ClassPoint point1: [0, 0] Circle circle1: Center= [0, 0]; Radius = 0 Circle circle1 (via point2): Center= [0, 0]; Radius = 0 Circle circle1 (via circle2): Center= [0, 0]; Radius = 0 point1 does not refer to a Circle
Use Is and As to convert a class to its implenented Interface
Imports System
     Interface Printable
         Sub Read( )
         Sub Write(ByVal obj As Object)
         Property Status( ) As Integer
     End Interface 
     Interface Zippable
         Sub Zip( )
         Sub Unzip( )
     End Interface 
     Public Class Document 
     Implements Printable
         Public Sub New(ByVal s As String)
             Console.WriteLine("Creating document with: {0}", s)
         End Sub 
         Public Sub Read( ) Implements Printable.Read
             Console.WriteLine("Implementing the Read Method for Printable")
         End Sub 
         Public Sub Write(ByVal o As Object) Implements Printable.Write
             Console.WriteLine("Implementing the Write Method for Printable")
         End Sub "Write
         Public Property Status( ) As Integer Implements Printable.Status
             Get
                 Return Status
             End Get
             Set(ByVal Value As Integer)
                 Status = Value
             End Set
         End Property
         Private myStatus As Integer = 0
     End Class "Document
     Class Tester
         Public Sub Run( )
         End Sub "Run
         Shared Sub Main( )
             Dim doc As New Document("Test Document")
             If TypeOf doc Is Printable Then
                 Dim isDoc As Printable = doc
                 isDoc.Read( )
             Else
                 Console.WriteLine("Could not cast to Printable")
             End If
             If TypeOf doc Is Zippable Then
                 Dim icDoc As Zippable = doc
                 icDoc.Zip( )
             Else
                 Console.WriteLine("Could not cast to Zippable")
             End If
         End Sub "Main
     End ClassCreating document with: Test Document Implementing the Read Method for Printable Could not cast to Zippable