2013-08-18 89 views
1

出於測試目的,我想創建一個小小的控制檯遊戲。這場比賽是關於有一些需要餵養的熊貓。在所有功能中使用實例

所以我想寫一些功能,如「概述」或「商店」的每個情況。對於熊貓我使用班級「熊貓」。但是當我在第一個函數中使用Panda p1 = new Panda()時,我不能在其他函數中使用它。

我該如何編寫一個函數來創建一個可用於所有函數的類的實例?

整個事情應該是這樣的:

namespace PandaWorld 
{ 
    public class Panda 
    { 
     ... 
    } 

    class Game 
    { 
     void CreatePanda() 
     { 
      ... //like Panda p1 = new panda(); 
     } 
     static void Main() 
     { 
      ... //uses p1 and other pandas 
     } 
    } 
} 

我可以用一個靜態的熊貓,但我希望能夠在運行時「創造」更多的熊貓。

回答

0

你可以寫你的大熊貓靜態wrapperclass,這使熊貓對象的靜態列表和訪問他們喜歡的;

PandaStaticWrapper.GetPanda(pandaName); 

創建一個新的

PandaStaticWrapper.CreateNewPanda(pandaName); 
0

如果我理解正確的問題...
這是不是不同的創建實例,它是引用傳遞給該實例...

eg

class MyClassA { 
    Panda myClassPanda; 

    void func1() 
    { 
      // assign a new panda to a shared reference... 
      myClassPanda = new Panda(); 
      myClassPanda.Name = "Kung Fu"; 
    } 

    void func2() 
    { 
     Console.WriteLine("the panda name is {0}", myClassPanda.Name); 
    } 

} 

你也可以創建大熊貓生活的靜態參考字典,像這樣:

public class Panda 
{ 
    private static Dictionary<string, Panda> LivingPandaz = new Dictionary<string, Panda>(); 

    public static Panda GetPanda(string pandaName) 
    { 
     Panda thePanda; 
     if (!LivingPandaz.TryGetValue(pandaName, out thePanda)) { 
      thePanda = new Panda(pandaName); 
      LivingPandaz.Add(pandaName, thePanda); 
     } 
     return thePanda; 
    } 

    private Panda(string pandaName) 
    { 

    }   
} 

也許增加一個一次性的,殺熊貓的生活時,不再需要它。
等等,你可以從任何地方得到所有的大熊貓的參考...

乾杯。

0

如果您在Game類的功能使用熊貓然後創建大熊貓

私有成員

因爲你需要幾個熊貓然後用ListDictionary

Class Game 
{ 
    private List<Panda> allPandas; 

    void Main() 
    { 
     this.allPandas = new List<Panda>(); 
     this.allPandas.Add(new Panda()); //first panda 
     this.allPandas.Add(new Panda()); //second panda 

    } 

    void AnotherFunction() 
    { 
     //here you can use functions of your first panda by index 
     this.allPandas[0].PandasFunction() 
    } 
} 

About List

在我看來如果你可以給一些分開的熊貓定製key更好。然後用Dictionary

private Dictionary<String, Panda> allPandas; 
在main()

this.allPandas = new Dictionary<String,Panda>(); 
this.allPandas.Add("PandaName", new Panda()); 
在其他功能上

this.allPandas["PandaName"].PandasFunction(); 

About Dictionary

如果你的遊戲有一個這就需要使用更多的類一個Panda的例子,那麼也許bette r練習將通過Constructor向他們提供Panda的實例或直接作爲參數。

AnotherGameClass 
{ 
    private Panda _handlePanda; 

    public AnotherGAmeClass(Panda handledPanda) 
    { 
     this._handlePanda = handledPanda 
    } 

    //or straight to function 
    public void CheckPanda(Panda checkingPanda) 
    { 
     //use your panda here 
    } 

} 
相關問題