0

C# でテキスト アドベンチャーを作成しようとしています。XNA コーディングとは大きく異なります。プレーヤーの性別を表示しようとしていますが、別のフィールドにあります。次のエラーが表示されます。

「BoyorGirl」という名前は現在のコンテキストには存在しません

(エラーは行 113、列 73 にあります)。

そして、これがスクリプトです:(エラーが表示される場所に // を置きます)

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ....
            Console.WriteLine("\t\t    Press Enter to continue...");
            Console.ReadLine();
            Console.Clear();
            Start_Game();
        }

        static public void Start_Game()
        {
            int StartMenu;
            Console.WriteLine(@"Welcome Adventurer..
            Are you ready for an adventure?
            #1 Start Game
            #2 Help
            #3 Exit");
            StartMenu = int.Parse(Console.ReadLine());
            switch (StartMenu)
            {
                case 1:
                    Start_Adventure();
                    break;
                case 2:
                    Help_Menu();
                    break;
                case 3:
                    Console.WriteLine("Goodbye.");
                    System.Threading.Thread.Sleep(1000);
                    Environment.Exit(0);
                    break;
                default:
                    Console.WriteLine("This is not an option..");
                    System.Threading.Thread.Sleep(2000);
                    Console.Clear();
                    Start_Game();
                    break;
            }
        }

        static public void Start_Adventure()
        {
            Console.Clear();
            Console.WriteLine("You're a normal..\nBoy/Girl?");
            string BoyorGirl;
            BoyorGirl = Console.ReadLine();
            BoyorGirl = BoyorGirl.ToLower();
            switch (BoyorGirl)
            {
                case "boy":
                    BoyorGirl = "Boy";
                    Console.Clear();
                    input_name();
                    break;
                case "girl":
                    BoyorGirl = "Girl";
                    Console.Clear();
                    input_name();
                    break;
                default:
                    Console.WriteLine("This is not an option..");
                    System.Threading.Thread.Sleep(2000);
                    Console.Clear();
                    Start_Adventure();
                    break;

            }

        }

        public static void input_name()
        {
            Console.WriteLine("You're just a normal {0}, called.. input your name please.");
            string name;
            name = Console.ReadLine();
            Console.Clear();
            Console.WriteLine("You're just a normal {0}, called {1}..", BoyorGirl, name); //The error appears here.
        }

        static public void Help_Menu()
        {

        }
    }
}

スタティックスも取り除きたいのですが、それは不可能だと思います。これを修正する方法について何か考えはありますか?

4

5 に答える 5

1

その変数は、Start_Adventure()メソッドのスコープ内にのみ存在します。

そのメソッドで使用する場合は、グローバルに宣言するか、メソッドに渡す必要があります。

public static void input_name(string BoyorGirl)
{
    //Do Work Here
}

また

namespace ConsoleApplication1
{
    class Program
    {
         private static string BoyOrGirl;
    ...

2番目のオプションを使用する場合は、これを削除することを忘れないでください

string BoyorGirl;

からStart_Adventure()

于 2013-11-14T09:48:47.493 に答える