2016-12-04 3 views
-1

Also arbeite ich mit zwei Dateien: Simulator und Umgebung. In der Umgebungsdatei habe ich eine Elementvariable namens "Entities". Es ist dort definiert und es hat Konstruktor und eine Get-Set-Funktion. Meine Simulator-Klasse enthält diese Umgebungsklasse in ihrem Code; mit einem Konstruktor und einer Set-Get-Funktion dafür.C# Zugreifen auf Mitgliedsvariable von einer Klasse in eine andere

Jetzt versuche ich, die Umgebung Klasse in der Simulator-Klasse arbeiten zu lassen. Der Code, den ich gerade habe, soll die Umgebungselementvariable "Entities" in einem for-loop-Code enthalten, den ich in meine Simulator-Klasse geschrieben habe.

Der Fehler, den ich erhalte, ist, dass das variable Mitglied im aktuellen Kontext nicht vorhanden ist. Ich möchte jedoch dem Computer mitteilen, dass die Elementvariable aus der Klasse Environment stammt. Wie kann ich diesen Fehler beheben? Ich benutze C#.

Dies ist der Code, den ich Problem mit, die ich:

die Methode run(), von meiner Simulator Klasse

public void run() 
    { 
     for (int i = 0; i < 50 && entities.Count > 1; i++) 
     { 
      entities.RemoveAll(m => !m.IsAlive()); 

      step(i); 
     } 

    } 

Hier ist die Umgebungsklasse.

#region ENVIRONMENT CLASS 
    //__________________// 
// ENVIRONMENT // 
//__________________// 
public abstract class ENVIRONMENT 
{ 
    private List<ENTITY> entities; 

    public ENVIRONMENT() 
    { 
     entities = new List<ENTITY>(); 
    } 

    public void AddEntity(ENTITY e) 
    { 
     entities = new List<ENTITY>(); 
     entities.Add(e); 
     Random rand = new Random(); 

     foreach (ENTITY element in entities) 
     { 
      int locX = rand.Next(0, 9); 
      int locY = rand.Next(0, 9); 
      element.X = locX; 
      element.Y = locY; 

      //element.LocalPoint.X = locX; 
      //element.LocalPoint.Y = locY; 
     } 
    } 

    public ICollection<ENTITY> Population 
    { 
     get { return entities; } 
    } 
} 

EDIT: Früher gab ich einen anderen Namen für Entitäten und das war List, also änderte ich es.

Antwort

0

Ich sehe kein Feld namens LIST, aber ich sehe ein Feld mit dem Namen entities, vom Typ LIST<ENTITY>.

eine internal oder publicget Eigenschaftenaccessor für Ihre entities Variable hinzufügen und entities auf eine leere Liste auf Klasse Instanziierung initialisieren.

Auch, warum sind alle Ihre Klassennamen (scheinbar) vollständig GROß?

public abstract class ENVIRONMENT 
{ 
    private List<ENTITY> entities = new List<ENTITY>(); 

    public List<ENTITY> Entities 
    { 
     get { return entities; } 
    } 
... 
} 
+0

Ah, ich habe es vergessen. Ich habe die Korrektur früher gemacht und die "Liste" in "Entitäten" geändert, ohne meinen Beitrag zu bearbeiten. Ich mache meine Klassennamen nur in Großbuchstaben, um meine Dateien zu organisieren. Ich habe zwei verschiedene Projekte unter einer Lösung und jedes enthält eine oder mehrere Dateien mit demselben Namen. Ich habe diesen Ansatz versucht, aber es scheint nicht den Fehler verschwinden zu lassen. Es besagt immer noch, dass die Entitäten im aktuellen Kontext nicht existieren. – miiworld2

+0

Können Sie einen Verweis hinzufügen, wo das Problem/der Fehler ausgelöst wird? –

Verwandte Themen