2016-08-25 12 views
0

セッターとゲッターの使用に問題があります。プライベートvarをクラスから別のクラスに呼び出そうとしたとき、私はvarの値を取得しません。 あなたがチェックアウトするためのコードの抜粋です。ゲッターは値を返しません

これは変数のセッターゲッタです。

class PlayerStats 

    private string _pName; 
    public string pName 
    { get { return _pName; } set { _pName = value; } } 
} 

ここに私のvarを表示したい。

public void Welcome() 
    { 
     PlayerStats pStats = new PlayerStats(); 
     Header(); 
     Console.WriteLine("Hello!"); 
     Console.WriteLine(pStats.pName); 

    } 

これは、これのどれもが、mainメソッドから実行されていない、私は私のVARの値を挿入する方法(このメソッドは、メソッドの歓迎の前に最初に実行される)

 public void Username() 
    { 
     PlayerStats pStats = new PlayerStats(); 
     string name; 
     Header(); 
     Console.Write("\nChoose your USERNAME: "); 
     name = Console.ReadLine(); 
     pStats.pName = name; 
    } 

です。

 static void Main(string[] args) 
    { 
     Jobs jobCl = new Jobs(); 
     GUI gui = new GUI(); 
     gui.Header(); 
     gui.StartPage(); 
     gui.Username(); 
     gui.ChoosepJob(); 
     gui.Welcome(); 
     Console.ReadLine(); 
    } 

私は、ユーザー名メソッドからVARを呼び出すと、私は何の問題それを印刷しますがを持っていない:私はそれはちょっと次のようになりますので、ちょうどメインの方法で異なるクラスは異なるメソッドを呼び出すことによって、私のプログラムをやって考えます私が他の方法からそれを呼び出すなら、それを印刷することはできません。

ご協力いただきありがとうございます。あなたがこれを行うための別の方法を提案できれば、私にそれを言うことをためらってください

+1

このメソッドにローカルとしてスコープされているPlayerStatsクラスの新しいインスタンスを作成するには、usernameとwelcomeメソッドの両方で同じインスタンスを使用する必要があります。 –

答えて

2

PlayerStatsすべてのメソッドを新しいメソッドにしないで、メソッドの外に一度作成し、それぞれに渡してください。あなたはおそらくJobsと同じ問題を抱えている、それはおそらくPlayerStats

public void Welcome() 
{ 
    PlayerStats pStats = new PlayerStats(); 
    Header(); 
    Console.WriteLine("Hello!"); 
    Console.WriteLine(pStats.pName); 

} 

の新しいインスタンスあなたが作成しているものを作成され、ここでChoosepJob

static void Main(string[] args) 
{ 
    PlayerStats pStats = new PlayerStats(); 
    Jobs jobCl = new Jobs(); 
    GUI gui = new GUI(); 
    gui.Header(); 
    gui.StartPage(); 
    gui.Username(pStats); 
    gui.ChoosepJob(jobCl); 
    gui.Welcome(pStats); 
    Console.ReadLine(); 
} 

public void Welcome(PlayerStats pStats) 
{ 
    Header(); 
    Console.WriteLine("Hello!"); 
    Console.WriteLine(pStats.pName); 

} 

public void Username(PlayerStats pStats) 
{ 
    string name; 
    Header(); 
    Console.Write("\nChoose your USERNAME: "); 
    name = Console.ReadLine(); 
    pStats.pName = name; 
} 
+0

これは本当に助けになりました。インスタンス化をメインメソッドに置くことを思い出さなければならず、すべてのメソッドでインスタンス化を追加することは、「安全に遊ぶ」ことではありません –

0

あなたの印刷方法に渡される必要がありますここ

public void Username() 
{ 
    PlayerStats pStats = new PlayerStats(); 
    string name; 
    Header(); 
    Console.Write("\nChoose your USERNAME: "); 
    name = Console.ReadLine(); 
    pStats.pName = name; 
} 

Welcome()方法で使用されていないトンのようにフォロースルーするためにあなたのメインの内の1つのインスタンスを作成します。

関連する問題