626
Chương 16: Các giao diện và mẫu thông dụng
throw new InvalidOperationException("Team modified");
}
// Nếu không, tiến đến TeamMember kế tiếp.
currentMember++;
// Trả về false nếu ta dịch qua khỏi TeamMember cuối cùng.
if (currentMember > (sourceTeam.teamMembers.Count-1)) {
return false;
} else {
return true;
}
}
// Hiện thực phương thức IEnumerator.Reset. Phương thức này
// reset vị trí của TeamMemberEnumerator về đầu tập hợp Team.
public void Reset() {
// Nếu Team nằm dưới bất hợp lệ, ném ngoại lệ.
if (teamInvalid) {
throw new InvalidOperationException("Team modified");
}
// Dịch con trỏ currentMember về trước phần tử đầu tiên.
currentMember = -1;
}
// Phương thức thụ lý sự kiện tập hợp Team nằm dưới thay đổi.
internal void TeamChange(Team t, EventArgs e) {
// Báo hiệu Team nằm dưới hiện đang bất hợp lệ.
teamInvalid = true;
}
}