以下のコードを見てください。
Public Class A
Public person1 As Person
End Class
Public Class B
Inherits A
Public Function CheckGender() As Boolean
If person1._Gender = "M" Then
CheckGender = True
End If
End Function
End Class
Public Class C
Inherits B
Public Function CheckAge() As Boolean
If person1._Age > 30 Then
CheckAge = True
End If
End Function
End Class
Public Class D
Inherits C
Public Sub SomeMethod()
Dim list As List(Of Person) = New List(Of Person)
Dim p1 As New Person("Ian", "M", 31)
Dim p2 As New Person("Susan", "F", 20)
Dim p3 As New Person("Mark", "M", 22)
list.Add(p1)
list.Add(p2)
list.Add(p3)
For Each Person As Person In list
person1 = Person
If CheckAge() And CheckGender() Then
'Do something
End If
Next
End Sub
Public Shared Sub Main()
Dim d As New D
d.SomeMethod()
End Sub
End Class
Public Class Person
Public _Name As String
Public _Gender As String
Public _Age As String
Public Sub New(ByVal Name As String, ByVal Gender As String, ByVal Age As Integer)
_Name = Name
_Gender = Gender
_Age = Age
End Sub
End Class
c.SomeMethodは 3 人をループし、次の 2 つのチェックを行います:b.CheckGenderとc.CheckAge. スーパークラスのインスタンス変数CheckGenderを使用します。 CheckAgeA
CheckGenderライブ環境のコードは、データベース内の毎日 100,000 レコードをループし、とCheckAgeが両方とも true であるレコードを削除します。このシナリオでインスタンス変数を使用するのは設計上の選択として不適切ですか? 私は常にローカル変数を使用するように教えられました。オブジェクトが各ループにPerson渡されることを期待しています。それとも本当に関係ないですか?CheckGenderCheckAge
上記のコードは架空の例であることに注意してください。 CheckGender実際のアプリケーションでCheckAgeは複雑な機能です。