L'opération n'est pas valide en raison de l'état actuel de l'objet - Linq sur la Liste

Cette erreur est levée lors de l'exécution d'une requête Linq sur une Liste.

Je suis avec Unity3D 3.0 avec C# (Unity3D utilise Mono 2.6). Unity3D, autant que je sache, est mono-thread. Il fonctionne en fixant des "scripts" (c# .fichiers cs) qui héritent d'un baseclass, à un "GameObject". Aussi, l'Unité contrôle de l'instanciation et la sérialisation des scripts de sorte que vous ne pouvez pas utiliser des constructeurs.

J'ai un RoadNetwork script qui contient une référence à RoadNodes et RoadCurves, qui recherchez RoadNetwork par l'intermédiaire d'un singleton et s'inscrire/se désabonner. J'ai mis "mini-usines" dans Ğroadnodeğ et RoadCurve que de faire le travail de l'accrochage elles-mêmes jusqu'à un gameobject.

Ğroadnodeğ vérifie d'abord avec RoadNetwork assurez-vous qu'il n'est pas déjà un nœud à la même position, en faisant ceci:

public static RoadNode2 New(float x, float y, float z)
{
    //First try to find an existing one
    var rn = RoadNetwork.Instance.GetNodeAtPosition(new Vector3(x, y, z))
             ?? UnityReferenceHelper.GetNewGameObjectFor<RoadNode2>(
                 "RoadNode_" + (RoadNetwork.Instance.Nodes.Count + 1).ToString("D3"),
                 RoadNetwork.Instance.transform.FindChild("Nodes"));

    rn.Position = new Vector3(x, y, z);

    rn.gameObject.active = true;

    return rn;
}

Où la méthode appropriée dans RoadNetwork est:

public RoadNode2 GetNodeAtPosition(Vector3 position)
{
    var tempList = new List<RoadNode2>();

    return tempList.Single(x => x.Position == position);
}

tempList eu une tentative de circonscrire le problème mais j'ai exactement la même erreur. Il devrait être Nœuds.Seul(...", mais j'en doute des questions. Je reçois la même erreur si je l'appelle la requête Linq directement dans la méthode New ().

Alors oui, cette Exception jette et des points de moi pour que tempList.Unique() de la ligne. Quelle serait la raison d'être?

InformationsquelleAutor George R | 2010-10-13