我正在尝试在主类中设置一个字符串,并将其发送到我的名字类,然后在主类中的另一个方法中使用它。 这就是我所拥有的。
我对编码很新,我今年刚开始上课。一切都有帮助。
我只是想做一个简单的冒险游戏。
提前致谢!
class Player
{
public string playerName { get; set; }
}
class MainClass
{
public static void nameSelection ()
{
Player player = new Player ();
Console.Clear ();
Console.WriteLine ("Let's start off simple adventurer, what is your name?");
player.playerName = Console.ReadLine ();
Console.Clear ();
Console.WriteLine ("Are you sure {0} is your name? Type 1 for yes and 2 for no", player.playerName);
string confirm = Console.ReadLine ();
if (confirm == "1") {
Console.Clear ();
Console.WriteLine ("Okay {0}, here we go!", player.playerName);
Console.ReadLine ();
}
else if (confirm == "2") {
Console.Clear();
nameSelection ();
}
else
{
Console.Clear ();
nameSelection ();
}
}
public static void classselsction()
{
Console.ReadLine ();
Console.WriteLine ("As you get to the end of the hallway you see a shadow.");
Console.ReadLine ();
Console.WriteLine("Hello {0}, I see you have managed to escape from your cell. " +
"You have proven yourself quite worthey.", player.playerName);
Console.ReadLine ();
}
}
答案 0 :(得分:2)
因此方法nameSelection()
在内部创建一个变量,并希望在调用它时将该变量提供给方法classselsction()
?只需将其添加为方法参数:
public static void classselsction(Player player)
{
// the code you already have
}
然后,当您调用该方法时,您将为其提供您创建的对象:
classselsction(player);
(请注意,您目前根本没有调用该方法。但是从描述中听起来您打算这样做?)
无关:您可能想要重新考虑nameSelection()
中正在进行的递归结构。如果要根据用户输入重新启动逻辑,请考虑循环而不是递归。你正在做的不是一个递归的事情,你只是重新询问用户输入,直到满足一个更多循环的条件。此递归将导致与player
变量的状态不必要的混淆,否则这对于方法的任何给定调用都是本地的。
根据方法的名称,可能不希望它们相互调用。我想应该有一些更高级别的方法,当需要输入时,它们依次调用它们中的每一个。虽然关于你正在建设的整体结构的讨论可以并且很快就会超出这个问题的范围。
基本上,作为建议的一句话......永远不要试图让你的代码变得聪明。简单的事情比复杂的事情要好。
答案 1 :(得分:2)
作为David建议的替代方案,您可以考虑将您的Player类实例作为MainClass的成员。像这样:
class MainClass
{
static Player player = new Player ();
public static void nameSelection ()
{
// Set player.playerName here
...
}
public static void classselsction ()
{
// Use player.playerName here.
...
}
}
我同意他的"无关"评论。递归可以是一个很好的工具,但这里不需要它。 KISS