以下のコードを見てください。
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
を使用します。 CheckAge
A
CheckGender
ライブ環境のコードは、データベース内の毎日 100,000 レコードをループし、とCheckAge
が両方とも true であるレコードを削除します。このシナリオでインスタンス変数を使用するのは設計上の選択として不適切ですか? 私は常にローカル変数を使用するように教えられました。オブジェクトが各ループにPerson
渡されることを期待しています。それとも本当に関係ないですか?CheckGender
CheckAge
上記のコードは架空の例であることに注意してください。 CheckGender
実際のアプリケーションでCheckAge
は複雑な機能です。