CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 625

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) {