public override int CompareTo(object obj) { if ((obj as TaskState) != null && task.name.Equals((obj as TaskState).task.name)) { TaskState other = obj as TaskState; return(progressState.CompareTo(other.progressState)); } else { throw new System.Exception("It tried comparison with different format"); } }