VB.Net Tutorial/Operator/Is
Версия от 19:40, 26 мая 2010; (обсуждение)
Demonstrate "is a" relationship
<source lang="vbnet">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 Class</source>
Point 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
<source lang="vbnet">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 Class</source>
Creating document with: Test Document Implementing the Read Method for Printable Could not cast to Zippable