VB.Net/Class/Class Type
Check Class Type in For each Loop
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
CType a Class
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