VB.Net/Class/Class Type — различия между версиями

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

Версия 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