Getter没有返回值

时间:2016-08-25 14:20:07

标签: c#

我在使用setter和getter时遇到了麻烦。当我试图从一个类调用私有var到另一个类时,我没有得到var的值。 以下是我的代码片段,供大家查看。

这是变量的setter getter。

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

    }

这是我在var上插入一个值的方法(在方法欢迎之前先执行此方法)

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

这些都不是从main方法运行的。我想通过在main方法中调用不同类的不同方法来完成我的程序,所以看起来像这样:

        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时,我打印它没有问题,但如果我要从其他方法调用它,我就无法打印它。

感谢您提供的任何帮助。此外,如果您可以建议采用不同的方式,请不要犹豫,告诉我

2 个答案:

答案 0 :(得分:2)

不要在每个方法中创建一个新的PlayerStats,在方法之外创建一次,然后将其传递给每个方法。 Jobs您可能遇到同样的问题,可能需要传递给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;
}

答案 1 :(得分:0)

此处的打印方法是创建PlayerStats

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

}

您在此处创建的那个未在Welcome()方法

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

在您的主程序中创建一个实例,如下所示:

public string Username()
{
    Header();
    Console.Write("\nChoose your USERNAME: ");
    name = Console.ReadLine();
    return name;
}

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

static void Main(string[] args)
{
    PlayerStats pStats = new PlayerStats();

    Jobs jobCl = new Jobs();
    GUI gui = new GUI();
    gui.Header();
    gui.StartPage();
    pStats.pName = gui.Username();
    gui.ChoosepJob();
    gui.Welcome(pStats);
    Console.ReadLine();
}