public void Process(Damage damage) { var addMarkE = m_AddMark.GetEnumerator(); while (addMarkE.MoveNext()) { if (addMarkE.Current.Value.Check(damage)) { damage.AddMark(addMarkE.Current.Value.mark); } } var removeMarkE = m_RemoveMark.GetEnumerator(); while (removeMarkE.MoveNext()) { if (removeMarkE.Current.Value.Check(damage)) { damage.RemoveMark(removeMarkE.Current.Value.mark); } } }