1
광고 C에서 프로젝트 개발 중입니다. 최근에 오류가 발생하여 이해할 수 없습니다. 모두 여기의IEquatable 현재 상태로 인해 작업이 올바르지 않습니다.
먼저 핵심
if (CanPlay(target.Coord.X, target.Coord.Y))
{
target.Owner = m.Player;
this.MoveList.Push(m);
// Groupes
var friends = GetAround(target).FindAll(i => i.Owner == target.Owner);
Groupe g = new Groupe { target };
foreach (Intersection fr in friends)
{
g.AddRange(GetGroupe(fr));
}
foreach (Intersection fr in friends)
{
this.Groupes.Remove(GetGroupe(fr));
}
this.Groupes.Add(g);
}
입니다 그리고 여기에 문제를 일으키는 getGroupe 기능입니다 :
Groupe GetGroupe(Intersection i)
{
return this.Groupes.First(g => g.Contains(i));
}
그래서, 이동이 완료 어떤 임의의 순간에, I IEquatable Operation가 객체의 현재 상태로 인해 유효하지 않습니다. 그래서 라인 (142)
g.AddRange(GetGroupe(fr));
155은 this.Groupes 이후
return this.Groupes.First(g => g.Contains(i));
이해가 안가에서만 빈입니다
InvalidOperationException: Operation is not valid due to the current state of the object
System.Linq.Enumerable.First[Groupe] (IEnumerable`1 source, System.Func`2 predicate, Fallback fallback)
System.Linq.Enumerable.First[Groupe] (IEnumerable`1 source, System.Func`2 predicate)
Assets.ObjetsDeJeu.Goban.GetGroupe (Assets.ObjetsDeJeu.Intersection i) (at Assets/ObjetsDeJeu/Goban.cs:155)
Assets.ObjetsDeJeu.Goban.PutRock (Assets.ObjetsDeJeu.Move m) (at Assets/ObjetsDeJeu/Goban.cs:142)
입니다
: 여기 는 스택 추적입니다 아주 begenning. 그룹을 찾기 전에 비어 있는지 확인했지만 아무 것도 변경하지 않은 테스트를 수행했습니다 ...
'Groupe' 및'Intersection'의 정의를 입력하십시오. –