VB.Net/Class/Class Type
Версия от 16:40, 26 мая 2010; (обсуждение)
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