У меня есть такой класс:
Public Class MyClass
Private _intList As New List(Of Integer)
Private _avg As Decimal
Public Sub Add(ByVal anInt As Integer)
_intList.Add(anInt)
End Sub
Public Property Avg() As Decimal
Get
Dim _sum As Integer = 0
For Each anInt In _intList
_sum += anInt
Next
Avg = If((_intList.Count > 0), _sum / _intList.Count, _avg)
Return _avg
End Get
Set(ByVal value As Decimal)
If _avg <> value Then
_avg = value
Console.WriteLine("Value changed")
End If
End Set
End Property
End Class
Getter вычисляет среднее значение и вызывает Setter для сохранения значения. Я почему-то не могу понять, среднее всегда 0. Например:
Dim c As New Class2()
c.Add(1)
c.Add(2)
c.Add(3)
Console.WriteLine(c.Avg.ToString()) ' This will print 0
Я сделал что-то не так? Какова причина этого?
Avg
должно быть свойством только для чтения, которое просто возвращает_avg
. Вы можете добавить грязный бит в методAdd
для пересчета_avg
, но в противном случае нет причин публично раскрывать свойство установки. - person Chris Haas   schedule 29.07.2011