VB.Net/Class/Class Type

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

Check Class Type in For each Loop

<source lang="vbnet"> Imports System Imports System.Collections Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim people As New Collection
       people.Add(New Employee("A"))
       people.Add(New Customer("B"))
       " Works.
       Dim emp As Employee
       For Each person As Object In people
           If TypeOf person Is Employee Then
               emp = CType(person, Employee)
               Console.WriteLine(emp.Name)
           ElseIf TypeOf person Is Customer Then
               Console.WriteLine(CType(person, Customer).Name)
           End If
       Next person
   End Sub

End Class

Public Class Employee

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub
   Public Overridable Function IsManager() As Boolean
       Return False
   End Function

End Class Public Class Customer

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub

End Class Public Class Manager

   Inherits Employee
   Public Sub New(ByVal new_name As String)
       MyBase.new(new_name)
   End Sub
   Public Overrides Function IsManager() As Boolean
       Return True
   End Function

End Class

      </source>


CType a Class

<source lang="vbnet"> Imports System Imports System.Collections Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim employees As New Collection
       employees.Add(New Employee("A"))
       employees.Add(New Manager("B"))
       employees.Add(New Manager("C"))
       employees.Add(New Employee("D"))
       ShowEmployees(employees)
       " Works.
       Dim emp As Employee
       For i As Integer = employees.Count To 1 Step -1
           emp = CType(employees(i), Employee)
           If emp.IsManager Then employees.Remove(i)
       Next i
       ShowEmployees(employees)
   End Sub
   Shared Private Sub ShowEmployees(ByVal employees As Collection)
       For Each emp As Employee In employees
           Console.WriteLine( emp.Name & vbCrLf )
       Next emp
   End Sub

End Class

Public Class Employee

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub
   Public Overridable Function IsManager() As Boolean
       Return False
   End Function

End Class Public Class Customer

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub

End Class Public Class Manager

   Inherits Employee
   Public Sub New(ByVal new_name As String)
       MyBase.new(new_name)
   End Sub
   Public Overrides Function IsManager() As Boolean
       Return True
   End Function

End Class

      </source>