2017-10-17 91 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 
    } 
} 
相關問題