VB.Net/Class/Class Type
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>