625
Chương 16: Các giao diện và mẫu thông dụng
// Giá trị nguyên cho biết TeamMember hiện tại (chỉ số
// trong ArrayList). Giá trị ban đầu là -1.
private int currentMember = -1;
// Phương thức khởi dựng (nhận một tham chiếu đến Team).
internal TeamMemberEnumerator(Team team) {
this.sourceTeam = team;
sourceTeam.TeamChange +=
new TeamChangedEventHandler(this.TeamChange);
}
// Hiện thực thuộc tính IEnumerator.Current.
public object Current {
get {
// Nếu TeamMemberEnumerator đứng trước phần tử đầu tiên
// hoặc sau phần tử cuối cùng thì ném ngoại lệ.
if (currentMember == -1 ||
currentMember > (sourceTeam.teamMembers.Count-1)) {
throw new InvalidOperationException();
}
// Nếu không, trả về TeamMember hiện tại.
return sourceTeam.teamMembers[currentMember];
}
}
// Hiện thực phương thức IEnumerator.MoveNext.
public bool MoveNext() {
// Nếu Team nằm dưới bất hợp lệ, ném ngoại lệ.
if (teamInvalid) {