2017-10-17 57 views
0

我有一个问题,从一个类传递属性到另一个。 我收到一个错误消息,说第二个类中的所有游戏属性都需要一个对象引用。它们在底部突出显示。 这是我的第一类(游戏):为什么我无法访问这些属性?

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(); 
      } 

我的第二类(InsertFunOOUI)

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

...你的图片。

+1

你需要你的'Game'类的_instance_来访问它的属性... – maccettura

回答

1

Game是一种类型。一类。您需要创建它的一个实例:

Game g = new Game(); 

,然后才使用:

g.Verb 

+0

看,我试过了...但创建一个新的实例时,IT圈回来并运行该方法再次。如果没有再次运行相同的方法,我不知道如何实例化它。 –

+0

我想我也可以解释一下。 Game类最初是在Main方法中实例化的。一旦运行,它将被移交给InsertFunOOUI类。哪个地方需要访问这些属性。 –

+0

'Game g = new Game();'应该只调用一次。根据你的评论在'Main'中。然后该实例需要传递给'InsertFunOOUI'并且应该在那里使用。其实这就是你在上次评论中写的。这个_应该工作。 – ispiro

0

您需要设置游戏的一个实例,为了使用它,除非它你打算让它成为一个静态类。

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

这样的事情?

0

首先像@ispiro说的那样创建你的游戏实例。你需要这样做一次(如果可能的话,主要的)。然后创建你的班级诗的一个实例。如果可能的话,使用依赖注入并传递游戏对象的属性作为参数,而不是整个对象。我甚至会在处理控制台输出的Poem类中创建一个方法。适应这个代码根据自己的喜好:

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 
    } 
} 
相关问题