2017-10-17 3 views
0

Ich habe ein Problem bei der Übergabe von Eigenschaften von einer Klasse zur anderen. Ich bekomme einen Fehler, der besagt, dass eine Objektreferenz für alle Spieleigenschaften in der zweiten Klasse erforderlich ist. Sie sind unten hervorgehoben. dies ist meine erste Klasse (Spiel):Warum habe ich keinen Zugriff auf diese Eigenschaften?

class Game 
     { 


    private string verb= ""; 
      private string noun= ""; 
      private string adjective= ""; 
      private string panimal= ""; 
      private string pnoun= ""; 


      public string Verb 
       { 
       get {return verb; } 
       set {verb = value; } 
       }  
      public string Noun 
       { 
       get {return noun; } 
       set {noun = value; } 
       } 

      public string Adjective 
       { 
       get {return adjective;} 
       set {adjective = value; } 
       } 
      public string Panimal 
       { 
       get {return panimal; } 
       set {panimal = value; } 
       } 

      public string Pnoun 
       { 
       get {return pnoun; } 
       set {pnoun = value; } 
       } 


      public void InScreen() 
      {   
      Console.WriteLine("First, give me a past tense VERB: "); 
      Verb = Console.ReadLine(); 

      Console.WriteLine("\nNow, give me a NOUN: "); 
      Noun = Console.ReadLine(); 

      Console.WriteLine("\nNext, I will need an ADJECTIVE: "); 
      Adjective = Console.ReadLine(); 

      Console.WriteLine("\nNow, I will need an ANIMAL(plural): "); 
      Panimal = Console.ReadLine(); 

      Console.WriteLine("\nFinally, I neeed a plural NOUN: "); 
      Pnoun = Console.ReadLine(); 
      } 

Meine zweite Klasse (InsertFunOOUI)

 public void Poem() 
     {  
     Console.WriteLine("Humpty Dumpty " + **Game.Verb** + "on a " + 
     **Game.Noun** 
     ); 
     Console.WriteLine("Humpty Dumpty had a " + **Game.Adjective** + " 
     fall" 
     ); 
     } 

... erhalten Sie das Bild.

+1

Sie benötigen einen _instance_ Ihrer 'Game' Klasse seine Eigenschaften zuzugreifen ... – maccettura

Antwort

1

Game ist ein Typ. Eine Klasse. Sie müssen eine Instanz davon erstellen:

Game g = new Game(); 

und nur dann verwenden:

g.Verb 

usw.

+0

zu sehen, habe ich versucht, dass ... aber wenn eine neue Instanz zu schaffen es Kreise zurück und läuft diese Methode noch einmal. Ich verstehe nicht, wie ich es instanziieren soll, ohne dass es die gleiche Methode noch einmal ausführt. –

+0

Ich denke, ich hätte das auch erklären können. Die Game-Klasse wird ursprünglich in der Main-Methode instanziiert. Sobald es ausgeführt wird, wird es an die InsertFunOOUI-Klasse übergeben. Wo brauche ich Zugang zu den Eigenschaften? –

+0

Die Zeile 'Game g = new Game();' sollte nur einmal aufgerufen werden. In "Main" nach Ihrem Kommentar. Dann muss diese Instanz an 'InsertFunOOUI' übergeben werden und sollte dort verwendet werden. Genau das hast du in deinem letzten Kommentar geschrieben. Das sollte funktionieren. – ispiro

0

Sie müssen eine Instanz Spiel um Setup, es zu benutzen, es sei denn, es Sie wollten dafür eine statische Klasse sein.

Game game = new Game(); 
game.InScreen(); 

So ähnlich?

0

Zuerst erstellen Sie eine Instanz Ihres Spiels wie @ispiro sagte. Sie müssen dies einmal tun (in der Hauptsache wenn möglich). Erstellen Sie dann eine Instanz Ihres Klassengedichtes. Verwenden Sie die Abhängigkeitsinjektion und übergeben Sie die Eigenschaften des Spielobjekts als Parameter anstelle des gesamten Objekts, wenn dies möglich ist. Ich würde sogar eine Methode in Ihrer Poem-Klasse erstellen, die die Konsolenausgabe behandelt. Passen Sie diesen Code nach Ihren Wünschen:

public void main() 
{ 
    var game = new Game(); 
    var poem = new Poem(); 
    poem.Output(game.Verb, game.Adjective); 
} 

public class Poem() 
{ 
    public void Output(string verb, string adjective) 
    { 
     // your console writeline code 
    } 
} 
Verwandte Themen