演習 - スターター コードを確認する

完了

開発プロセスのこの最初の手順では、Starter プロジェクト フォルダーに用意されているコードを確認します。

Program.cs ファイルの内容を確認する

Program.cs ファイルには、作業中のアプリケーションの予備バージョンが含まれています。 このコードには、アプリケーションのサンプル データを生成して表示する機能が含まれており、アプリケーションの主な機能を定義するメニュー オプションの一覧が表示されます。

  1. Visual Studio Code で "GuidedProject" フォルダー (Guided-project-Work-with-variable-data-in-CSharp-main) が開かれていることを確認します。

    "準備" ユニット (このモジュールの前のユニット) には、ガイド付きプロジェクトの最初の開始点をダウンロードし、Visual Studio Code フォルダーを開くプロセスについて説明するセットアップ セクションが含まれています。 必要に応じて、戻ってセットアップ手順に従ってください。

  2. [エクスプローラー] ビューで、[スターター] フォルダーを展開し、[Program.cs] を選択します。

    Program.csファイルを選択すると、エクスプローラーの右側にあるメインエディター領域でファイルの内容が開きます。

    エクスプローラー ビューが開いていない場合は、Visual Studio Code の左端にあるアクティビティ バーからエクスプローラー ビューを選択または開くことができます。 EXPLORER はアクティビティ バーの一番上のアイコンです。

  3. Program.cs ファイルの先頭にある初期変数宣言を確認するには数分かかります。

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
    // #2 variables that support data entry
    int maxPets = 8;
    string? readResult;
    string menuSelection = "";
    
    // #3 array used to store runtime data, there is no persisted data
    string[,] ourAnimals = new string[maxPets, 6];
    

    最初に、コメント (コメント #1) の後に変数の一覧が表示されます。 これらの変数は、animalSpeciesからanimalNicknameまでの範囲で、ペットの特性の値を保持するために使われ、ourAnimalsという名前の多次元文字列配列内で、初期化して長さ 0 の文字列""を含むように設定されます。 ourAnimals配列宣言は、コードのもう少し下にあります。

    次の変数グループ (コメント 2 の下) は、サンプル データの生成、ユーザー入力の読み取り、メイン プログラム ループの終了条件の確立に役立つ string 変数と int 変数の組み合わせです。 コード行 string? readResult;注意してください。 ?文字を使用して、本来nullを許容しない変数型 (int、string、boolなど) をnullを許容できる型に変換します。

    Console.ReadLine() メソッドでユーザーが入力した値を読み取る場合は、string?を使用して null 許容型の文字列を有効にして、プロジェクトのビルド時にコード コンパイラが警告を生成しないようにすることをお勧めします。

    最後の変数 (コメント #3 の下) は、 ourAnimalsという名前の 2 次元文字列配列です。 maxPets で定義されている行数を 8 に初期化しました。 最初に格納する特性の数は 6 です。 6 つの特性は、サンプル コードで調べた文字列変数の数と一致しますが、 suggestedDonationのフィールドを追加するには、特性の数を拡張する必要があります。

  4. Program.cs ファイルを下にスクロールして、コード ブロック内にfor選択コンストラクトを含むswitch ループを調べます。

    コード サンプルは、領域を節約するための短縮バージョンです。

    // #4 create sample data ourAnimals array entries
    for (int i = 0; i < maxPets; i++)
    {
        switch (i)
        {
            case 0:
                animalSpecies = "dog";
                animalID = "d1";
                animalAge = "2";
                animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
                animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
                animalNickname = "lola";
                break;
    
            case 1:
                animalSpecies = "dog";
                animalID = "d2";
                animalAge = "9";
                animalPhysicalDescription = "large reddish-brown male golden retriever weighing about 85 pounds. housebroken.";
                animalPersonalityDescription = "loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.";
                animalNickname = "gus";
                break;
    
            // case 2: deleted for brevity
            // case 3: deleted for brevity
    
            default:
                animalSpecies = "";
                animalID = "";
                animalAge = "";
                animalPhysicalDescription = "";
                animalPersonalityDescription = "";
                animalNickname = "";
                break;
        }
        ourAnimals[i, 0] = "ID #: " + animalID;
        ourAnimals[i, 1] = "Species: " + animalSpecies;
        ourAnimals[i, 2] = "Age: " + animalAge;
        ourAnimals[i, 3] = "Nickname: " + animalNickname;
        ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription;
        ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;
    }
    
  5. for ループでは、maxPets変数を使用して、コメント #4 に続く反復回数の上限が確立されることに注意してください。

  6. また、サンプル データ セット内のペットに対して異なるペットの特性を定義できるように、 switch コンストラクトによってコードが選択的に分岐していることにも注意してください。

    switch ステートメントを使用して、for ループの最初の 4 回の反復で異なる値を定義します。 サンプル データ処理の後、すべての特性が空または長さ 0 の文字列になります。

    動物特性変数の値は、 for ループの下部にある ourAnimals 配列に割り当てられます。

  7. Visual Studio Code でコード ファイルの一番下までスクロールします。 メニュー オプションを表示し、ユーザーの選択内容の入力をキャプチャするために使用するコードを確認します。

    次のコードを確認する必要があります。

    // #5 display the top-level menu options
    do
    {
        // NOTE: the Console.Clear method is throwing an exception in debug sessions
        Console.Clear();
    
        Console.WriteLine("Welcome to the Contoso PetFriends app. Your main menu options are:");
        Console.WriteLine(" 1. List all of our current pet information");
        Console.WriteLine(" 2. Display all dogs with a specified characteristic");
        Console.WriteLine();
        Console.WriteLine("Enter your selection number (or type Exit to exit the program)");
    
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            menuSelection = readResult.ToLower();
        }
    
        // use switch-case to process the selected menu option
        switch (menuSelection)
        {
            case "1":
                // list all pet info
                for (int i = 0; i < maxPets; i++)
                {
                    if (ourAnimals[i, 0] != "ID #: ")
                    {
                        Console.WriteLine();
                        for (int j = 0; j < 6; j++)
                        {
                            Console.WriteLine(ourAnimals[i, j]);
                        }
                    }
                }
                Console.WriteLine("\n\rPress the Enter key to continue");
                readResult = Console.ReadLine();
                break;
    
            case "2":
                // Display all dogs with a specified characteristic");
                Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");
                Console.WriteLine("Press the Enter key to continue.");
                readResult = Console.ReadLine();
                break;
    
            default:
                break;
        }
    
    } while (menuSelection != "exit");
    
  8. 2 つの case ステートメントを確認するには、少し時間がかかります。

    アプリケーションの制限付きバージョンで動作するメニュー オプションは 2 つだけです。 スターター アプリケーションには、プロトタイプの実行とテストに必要な機能のみが用意されています。

  9. コード行が readResult = Console.ReadLine(); され、その後に null 値のチェックが続きます。

    Console.ReadLine()メソッドを使用するコードには、プロジェクトのビルド時にコード コンパイラが警告を生成しないように、null 許容文字列readResultに設定された値があります。

作業を確認する

  1. スタート コード コンソール アプリをテストし、TERMINAL コマンド プロンプトでビルドし、「 dotnet run」と入力して 1 つのコマンドでプロジェクト コードを実行します。

    ターミナル プロンプトはスタートフォルダーで開く必要があり、そのターミナルは次のように見えます。 ..\ArrayGuidedProject\starter>

    コードを実行すると、2 つのメニュー項目が表示されます。

    • Enter: 1、"現在のペット情報をすべて一覧表示する" 出力をテストします
    • プレースホルダー メッセージの "作成中" メッセージをテストするには、「2」と入力します
  2. Enter: 1し、次に "Enter" キーを押して "すべてのペットを表示" します。

  3. すべてのペット情報が表示されていることを確認します。

    すべてのペットのデータを観察すると、最後に表示されるペットは次の出力と一致する必要があります。

    ID #: c4
    Species: cat
    Age: 3
    Nickname: Lion
    Physical description: Medium sized, long hair, yellow, female, about 10 pounds. Uses litter box.
    Personality: A people loving cat that likes to sit on your lap.
    
    Press the Enter key to continue
    
  4. Enter キーを押して続行し、メニューに戻ります。

  5. メニュー プロンプトで、「 2 」と入力し、次に 「Enter」キーを押します。

    この選択肢は、「指定した特性を持つすべての犬を表示する」機能の仮の設定です。

  6. UNDER CONSTRUCTIONメッセージが表示され、Display all dogs with a specified characteristic選択されていることを確認します。

    次のような出力が表示されます。

    UNDER CONSTRUCTION - please check back next month to see progress.
    Press the Enter key to continue.
    
  7. アプリ メニューで「exit」と入力してプログラムを終了し、ターミナル パネルを閉じてください。

    プログラムが終了します。

これで、新機能の開発を開始する準備ができました。