チュートリアル: Visual Studio でシンプルな C# コンソール アプリを作成する (パート 1/2)

適用対象:yesVisual Studio noVisual Studio for Mac noVisual Studio Code

このチュートリアルでは、Visual Studio を使用して、C# のコンソール アプリを作成および実行し、Visual Studio の統合開発環境 (IDE) の機能をいくつか確認します。 このチュートリアルは、2 部構成のチュートリアル シリーズのパート 1 です。

このチュートリアルでは、次の作業を行いました。

  • Visual Studio のプロジェクトを作成します。
  • C# のコンソール アプリを作成します。
  • アプリをデバッグします。
  • お使いのアプリを閉じます。
  • 自分の完成したコードを検査します。

パート 2 では、このアプリを拡張してプロジェクトを追加し、デバッグのコツを学習し、サードパーティー製パッケージを参照します。

[前提条件]

Visual Studio をインストールする必要があります。

Visual Studio をまだインストールしていない場合は、Visual Studio のダウンロード ページに移動し、無料試用版をインストールしてください。

プロジェクトを作成する

まず C# アプリケーション プロジェクトを作成します。 このプロジェクト タイプには、必要なテンプレート ファイルがすべて用意されています。

  1. Visual Studio を開き、[開始] ウィンドウで [新しいプロジェクトの作成] を選択します。

    [新しいプロジェクトの作成] ウィンドウを示すスクリーンショット。

  2. **[新しいプロジェクトの作成]** ウィンドウで、言語の一覧から **[C#]** を選択します。 次に、プラットフォームの一覧から **[Windows]** を選択し、プロジェクトの種類の一覧から **[コンソール]** を選択します。

    言語、プラットフォーム、およびプロジェクトの種類のフィルターを適用してから、 [コンソール アプリケーション] テンプレートを選択して、 [次へ] を選択します。

    注意

    コンソール アプリケーション テンプレートが表示されない場合は、 [さらにツールと機能をインストールする] を選択します。

    [さらにツールと機能をインストールする] リンクを示すスクリーンショット。

    次に、Visual Studio インストーラーで、 [.NET Core クロスプラットフォームの開発] ワークロードを選択します。

    Visual Studio インストーラーの .NET Core クロスプラットフォーム開発ワークロードを示すスクリーンショット。

    その後、Visual Studio インストーラー内の [変更] ボタンをクリックします。 作業内容を保存するよう求められることがあります。その場合は、そのようにします。 次に、 [続行] を選択してワークロードをインストールします。 その後、この「プロジェクトを作成する」プロシージャの手順 2 に戻ります。

  3. **[新しいプロジェクトの構成]** ウィンドウの **[プロジェクト名]** ボックスに「*電卓*」とタイプまたは入力します。 その後、 [次へ] を選択します。

    [新しいプロジェクトの構成] ウィンドウでプロジェクトに「電卓」という名前を付ける画面のスクリーンショット。

  4. [追加情報] ウィンドウでは、ターゲット フレームワークとして [.NET Core 3.1] が既に選択されているはずです。 そうでない場合は [.NET Core 3.1] を選択します。 次に、 [作成] を選択します。

    [追加情報] ウィンドウで .NET Core 3.1 が選択されていることを確認する画面のスクリーンショット。

    Visual Studio によってその新しいプロジェクトが開かれます。プロジェクトには既定で "Hello World" コードが含まれます。 エディターに表示するには、[ソリューション エクスプローラー] ウィンドウ (通常は Visual Studio の右側にあります) で、コード ファイル Program.cs を選択します。

    既定の "Hello World" コードによって WriteLine メソッドが呼び出され、コンソール ウィンドウにリテラル文字列 "Hello World!" が表示されます。 F5 キーを押すと、既定のプログラムをデバッグ モードで実行できます。 デバッガーでアプリケーションを実行すると、コンソール ウィンドウが開いたままになります。 任意のキーを押して、コンソール ウィンドウを閉じます。

  1. Visual Studio を開き、[開始] ウィンドウで [新しいプロジェクトの作成] を選択します。

    [新しいプロジェクトの作成] ウィンドウを示すスクリーンショット。

  2. [新しいプロジェクトの作成] ウィンドウで [すべての言語] を選択し、ドロップダウン リストから [C#] を選択します。 [すべてのプラットフォーム] リストから [Windows] を選択し、 [すべてのプロジェクトの種類] リストから [コンソール] を選択します。

    言語、プラットフォーム、およびプロジェクト タイプのフィルターを適用してから、 [コンソール アプリケーション] テンプレートを選択して、 [次へ] を選択します。

    注意

    [コンソール アプリケーション] テンプレートが表示されない場合は、 [さらにツールと機能をインストールする] を選択します。

    [さらにツールと機能をインストールする] リンクを示すスクリーンショット。

    Visual Studio インストーラーで、 [.NET デスクトップ開発] ワークロードを選択し、 [変更] ボタンを選択します。

    Visual Studio インストーラーの .NET デスクトップ開発ワークロードを示すスクリーンショット。

  3. [新しいプロジェクトの構成] ウィンドウの [プロジェクト名] ボックスに「電卓」とタイプまたは入力し、 [次へ] を選択します。

    [新しいプロジェクトの構成] ウィンドウでプロジェクトに「電卓」という名前を付ける画面のスクリーンショット。

  4. [追加情報] ウィンドウでは、ターゲット フレームワークとして [.NET 6.0] が既に選択されているはずです。 [作成] を選択します

    [追加情報] ウィンドウで選択されている .NET 6.0 を示すスクリーンショット。

    Visual Studio によってその新しいプロジェクトが開かれます。プロジェクトには既定で "Hello World" コードが含まれます。

    エディターに表示するには、[ソリューション エクスプローラー] ウィンドウ (通常は Visual Studio の右側にあります) で、コード ファイル Program.cs を選択します。

    1 つのコード ステートメントによって WriteLine メソッドが呼び出され、コンソール ウィンドウにリテラル文字列 "Hello World!" が表示されます。 F5 キーを押すと、既定のプログラムをデバッグ モードで実行できます。 デバッガーでアプリケーションを実行すると、コンソール ウィンドウが開いたままになります。 任意のキーを押して、コンソール ウィンドウを閉じます。

    注意

    .NET 6 以降、コンソール テンプレートを使用した新しいプロジェクトからは、以前のバージョンとは異なるコードが生成されます。 詳細については、「新しい C# テンプレートで、最上位レベルのステートメントが生成される」ページを参照してください。

アプリを作成する

このセクションでは、次の作業を行います。

  • C# での基本的な整数計算を見ていきます。
  • 基本的な電卓アプリを作成するコードを追加します。
  • アプリをデバッグし、エラーを見つけて修正します。
  • コードを修正してさらに効率的にします。

整数の演算の確認

C# での基本的な整数演算から始めます。

  1. コード エディターで、既定の "Hello World" のコードを削除します。

    新しい電卓アプリから既定の Hello World コードを削除する画面のスクリーンショット。

    具体的には、`Console.WriteLine("Hello World!");` と記述された行を削除します。

  2. その場所に、次のコードを入力します。

            int a = 42;
            int b = 119;
            int c = a + b;
            Console.WriteLine(c);
            Console.ReadKey();
    

    それを行う場合は、Visual Studio の IntelliSense 機能によって、入力のオートコンプリート オプションが提供されることに注意してください。

    Visual Studio IDE の IntelliSense オートコンプリート機能を示す整数計算コードのアニメーション。

  3. **[Calculator]** の横にある緑色の **[開始]** ボタンを選択して、プログラムをビルドして実行します。または、**F5** キーを押します。

    [電卓] ボタンを選択してツール バーからアプリを実行する画面のスクリーンショット。

    コンソール ウィンドウが開き、42 + 119 の合計 (**161**) が表示されます。

    整数演算の結果が表示されたコンソール ウィンドウを示すスクリーンショット。

  4. **(省略可能)** 演算子を変更することで、結果を変えることができます。 たとえば、`int c = a + b;` コード行の `+` 演算子を減算用の `-`、乗算用の `*`、または除算用の `/` に変更することができます。 次に、プログラムを実行すると、結果も変更されます。

  5. コンソール ウィンドウを閉じます。

  1. ソリューション エクスプローラーの右ペインにある Program.cs を選択して、コード エディターにファイルを表示します。

  2. コード エディターで、Console.WriteLine("Hello World!"); という既定の "Hello World" のコードを置き換えます。

    プログラム ファイル内の置き換える行を示すスクリーンショット。

    この行を次のコードに置き換えます。

        int a = 42;
        int b = 119;
        int c = a + b;
        Console.WriteLine(c);
        Console.ReadKey();
    

    コードを入力すると、Visual Studio の IntelliSense 機能によって、入力をオートコンプリートするオプションが表示されます。

    Visual Studio IDE の IntelliSense オートコンプリート機能を示す整数計算コードのアニメーション。

  3. アプリをビルドして実行するには、F5 キーを押すか、上部のツール バーの名前 [電卓] の横にある緑色の矢印を選択します。

    [デバッグ] ツール バーから [電卓] ボタンを選択してアプリを実行する画面のスクリーンショット。

    コンソール ウィンドウが開き、42 + 119 の合計 (161) が表示されます。

    整数計算の結果が表示されているコンソール ウィンドウのスクリーンショット。

  4. コンソール ウィンドウを閉じます。

  5. 必要に応じて、演算子を変更して結果を変えることができます。 たとえば、`int c = a + b;` コード行の `+` 演算子を減算用の `-`、乗算用の `*`、または除算用の `/` に変更することができます。 アプリを実行すると、それに応じて結果が変わります。

電卓を作成するコードを追加する

次に、より複雑な一連の電卓コードをプロジェクトに追加してみましょう。

  1. コード エディターで program.cs のすべてのコードを次の新しいコードに置き換えます。

        using System;
    
        namespace Calculator
        {
            class Program
            {
                static void Main(string[] args)
                {
                    // Declare variables and then initialize to zero.
                    int num1 = 0; int num2 = 0;
    
                    // Display title as the C# console calculator app.
                    Console.WriteLine("Console Calculator in C#\r");
                    Console.WriteLine("------------------------\n");
    
                    // Ask the user to type the first number.
                    Console.WriteLine("Type a number, and then press Enter");
                    num1 = Convert.ToInt32(Console.ReadLine());
    
                    // Ask the user to type the second number.
                    Console.WriteLine("Type another number, and then press Enter");
                    num2 = Convert.ToInt32(Console.ReadLine());
    
                    // Ask the user to choose an option.
                    Console.WriteLine("Choose an option from the following list:");
                    Console.WriteLine("\ta - Add");
                    Console.WriteLine("\ts - Subtract");
                    Console.WriteLine("\tm - Multiply");
                    Console.WriteLine("\td - Divide");
                    Console.Write("Your option? ");
    
                    // Use a switch statement to do the math.
                    switch (Console.ReadLine())
                    {
                        case "a":
                            Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2));
                            break;
                        case "s":
                            Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2));
                            break;
                        case "m":
                            Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2));
                            break;
                        case "d":
                            Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
                            break;
                    }
                    // Wait for the user to respond before closing.
                    Console.Write("Press any key to close the Calculator console app...");
                    Console.ReadKey();
                }
            }
        }
    
  2. [電卓] ボタンを選択するか、F5 キーを押してアプリを実行します。

    コンソール ウィンドウが開きます。

  3. コンソール ウィンドウで、プロンプトに従って数値 42119 を加算します。

    アプリは次のスクリーンショットのようになります。

    電卓アプリとプロンプトが表示されているコンソール ウィンドウのスクリーンショット。

  1. コード エディターで program.cs のすべてのコードを次の新しいコードに置き換えます。

        // Declare variables and then initialize to zero.
        int num1 = 0; int num2 = 0;
    
        // Display title as the C# console calculator app.
        Console.WriteLine("Console Calculator in C#\r");
        Console.WriteLine("------------------------\n");
    
        // Ask the user to type the first number.
        Console.WriteLine("Type a number, and then press Enter");
        num1 = Convert.ToInt32(Console.ReadLine());
    
        // Ask the user to type the second number.
        Console.WriteLine("Type another number, and then press Enter");
        num2 = Convert.ToInt32(Console.ReadLine());
    
        // Ask the user to choose an option.
        Console.WriteLine("Choose an option from the following list:");
        Console.WriteLine("\ta - Add");
        Console.WriteLine("\ts - Subtract");
        Console.WriteLine("\tm - Multiply");
        Console.WriteLine("\td - Divide");
        Console.Write("Your option? ");
    
        // Use a switch statement to do the math.
        switch (Console.ReadLine())
        {
            case "a":
                Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2));
                break;
            case "s":
                Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2));
                break;
            case "m":
                Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2));
                break;
            case "d":
                Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
                break;
        }
        // Wait for the user to respond before closing.
        Console.Write("Press any key to close the Calculator console app...");
        Console.ReadKey();
    
  2. [電卓] ボタンを選択するか、F5 キーを押してアプリを実行します。

    コンソール ウィンドウが開きます。

  3. コンソール ウィンドウで、プロンプトに従って数値 42119 を加算します。

    アプリは次のスクリーンショットのようになります。

    電卓アプリとプロンプトが表示されているコンソール ウィンドウのスクリーンショット。

小数の機能を追加する

次はコードを手を加えて機能を追加しましょう。

現在の電卓アプリは、整数を受け取って返すだけの機能です。 たとえば、アプリを実行して数値 42 を数値 119 で割ると、結果は 0 になりますが、これは正確ではありません。

電卓アプリから結果として正確ではない整数が返されることを示すコンソール ウィンドウのスクリーンショット。

小数を処理して精度が向上するようにコードを修正します。

  1. Visual Studio エディターの program.cs から Ctrl+H キーを押し、 [検索と置換] コントロールを開きます。

  2. コントロールに「int」と入力し、 [置換] フィールドに「float」と入力します。

  3. コントロールの [大文字と小文字を区別][単語単位] のアイコンを選択するか、Alt+C キーと Alt+W キーを押します。

  4. [すべて置換] アイコンを選択するか、Alt+A キーを押して検索と置換を実行します。

    int 変数を float に変更する方法を示す [検索と置換] コントロールのアニメーション。

  5. 電卓アプリをもう一度実行し、数値 42 を数値 119 で割ります。

    アプリから 0 ではなく小数が返されるようになりました。

    結果として小数を返すようになった電卓アプリが表示されているコンソール ウィンドウのスクリーンショット。

これでアプリで小数の結果を生成できるようになりました。 もう少しコードに手を加えて、小数も計算できるようにしましょう。

  1. [検索と置換] コントロールを使用して float 変数の各インスタンスを double に変更し、Convert.ToInt32 メソッドの各インスタンスを Convert.ToDouble に変更します。

  2. 電卓アプリを実行し、数値 42.5 を数値 119.75 で割ります。

    アプリが小数値を受け取り、結果として長い小数値が返されるようになりました。

    小数を受け取り、長い小数の結果を返すようになった電卓アプリが表示されているコンソール ウィンドウのスクリーンショット。

    コードを修正する」セクションでは、結果の小数点以下の桁数を減らします。

アプリをデバッグする

基本的な電卓アプリを改善しましたが、ユーザーの入力エラーなどの例外はまだ処理されていません。 たとえば、ユーザーが 0 で除算しようとしたり、予期しない文字を入力したりすると、アプリの動作が停止する、エラーが返される、または予期しない数値以外の結果が返されることがあります。

一般的なユーザー入力エラーをいくつか見てみましょう。発生した場合はデバッガーで探し、コードで修正します。

ヒント

デバッガーとそのしくみの詳細については、「最初に Visual Studio デバッガーを見る」を参照してください。

"0 除算" エラーを修正する

数値を 0 で除算しようとすると、コンソール アプリがフリーズし、コード エディターに問題が表示されることがあります。

Visual Studio コード エディターのスクリーンショット。1 行が黄色で強調されています。

注意

場合によっては、アプリがフリーズせず、デバッガーに 0 除算エラーが表示されないことがあります。 代わりに、無限大記号など、予期しない数値以外の結果がアプリから返されることがあります。 この場合でも、次のコード修正を利用できます。

このエラーを処理するようにコードを変更するには:

  1. program.cscase "d":// Wait for the user to respond before closing というコメントの間にあるコードを、次のコードに置き換えます。

             // Ask the user to enter a non-zero divisor until they do so.
                 while (num2 == 0)
                 {
                     Console.WriteLine("Enter a non-zero divisor: ");
                     num2 = Convert.ToInt32(Console.ReadLine());
                 }
                 Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
                 break;
         }
    

    コードを置き換えると、switch ステートメントを含むセクションは次のスクリーンショットのようになります。

    Visual Studio コード エディターで変更された switch セクションを示すスクリーンショット。

これで、任意の数値を 0 で割ると、アプリから別の数値が要求され、0 以外の数値を入力するまで要求が続けられます。

0 以外の数値を入力するように求めるプロンプトが繰り返されるコンソール ウィンドウのスクリーンショット。

"書式" エラーを修正する

アプリで数字が想定されているときにアルファベットを入力すると、アプリはフリーズします。 Visual Studio のコード エディターに問題が表示されます。

Visual Studio のコード エディターの未処理の形式エラーを示すスクリーンショット。

Visual Studio のコード エディターの未処理の形式エラーを示すスクリーンショット。

この例外を防ぐには、先ほど入力したコードをリファクターします。

コードを修正する

program クラスに依存してすべてのコードを処理するのではなく、アプリを 2 つのクラス CalculatorProgram に分割することができます。

Calculator クラスにより、計算作業の大部分が処理され、Program クラスにより、ユーザー インターフェイスとエラー処理作業が処理されます。

それでは、始めましょう。

  1. program.cs の中かっこで囲まれている Calculator 名前空間内のすべてを削除します。

    using System;
    
    namespace Calculator
    {
    
    }
    
  2. 中かっこの間に、次の新しい Calculator クラスを追加します。

    class Calculator
    {
        public static double DoOperation(double num1, double num2, string op)
        {
            double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error.
    
            // Use a switch statement to do the math.
            switch (op)
            {
                case "a":
                    result = num1 + num2;
                    break;
                case "s":
                    result = num1 - num2;
                    break;
                case "m":
                    result = num1 * num2;
                    break;
                case "d":
                    // Ask the user to enter a non-zero divisor.
                    if (num2 != 0)
                    {
                        result = num1 / num2;
                    }
                    break;
                // Return text for an incorrect option entry.
                default:
                    break;
            }
            return result;
        }
    }
    
    
  3. さらに、次のように、新しい Program クラスを追加します。

    class Program
    {
        static void Main(string[] args)
        {
            bool endApp = false;
            // Display title as the C# console calculator app.
            Console.WriteLine("Console Calculator in C#\r");
            Console.WriteLine("------------------------\n");
    
            while (!endApp)
            {
                // Declare variables and set to empty.
                string numInput1 = "";
                string numInput2 = "";
                double result = 0;
    
                // Ask the user to type the first number.
                Console.Write("Type a number, and then press Enter: ");
                numInput1 = Console.ReadLine();
    
                double cleanNum1 = 0;
                while (!double.TryParse(numInput1, out cleanNum1))
                {
                    Console.Write("This is not valid input. Please enter an integer value: ");
                    numInput1 = Console.ReadLine();
                }
    
                // Ask the user to type the second number.
                Console.Write("Type another number, and then press Enter: ");
                numInput2 = Console.ReadLine();
    
                double cleanNum2 = 0;
                while (!double.TryParse(numInput2, out cleanNum2))
                {
                    Console.Write("This is not valid input. Please enter an integer value: ");
                    numInput2 = Console.ReadLine();
                }
    
                // Ask the user to choose an operator.
                Console.WriteLine("Choose an operator from the following list:");
                Console.WriteLine("\ta - Add");
                Console.WriteLine("\ts - Subtract");
                Console.WriteLine("\tm - Multiply");
                Console.WriteLine("\td - Divide");
                Console.Write("Your option? ");
    
                string op = Console.ReadLine();
    
                try
                {
                    result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                    if (double.IsNaN(result))
                    {
                        Console.WriteLine("This operation will result in a mathematical error.\n");
                    }
                    else Console.WriteLine("Your result: {0:0.##}\n", result);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
                }
    
                Console.WriteLine("------------------------\n");
    
                // Wait for the user to respond before closing.
                Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
                if (Console.ReadLine() == "n") endApp = true;
    
                Console.WriteLine("\n"); // Friendly linespacing.
            }
            return;
        }
    }
    
  4. [電卓] ボタンを選択するか、F5 キーを押してアプリを実行します。

  5. 画面の指示に従って、値 **42** を値 **119** で割ります。 結果は次のスクリーンショットのようになります。

    リファクターされた電卓アプリのコンソール ウィンドウのスクリーンショット。

    リファクターされた電卓アプリのコンソール ウィンドウのスクリーンショット。

    コンソール アプリを閉じるまで、さらに式を入力できるようになりました。 また、結果の小数点以下の桁数も少なくなりました。 また、間違った文字を入力した場合には、適切なエラー応答が表示されます。

アプリを閉じる

  1. まだ行っていない場合は、電卓アプリを閉じます。

  2. Visual Studio の **[出力]** ウィンドウを閉じます。

    Visual Studio の [出力] ペインを閉じる画面のスクリーンショット。

  3. Visual Studio で **Ctrl**+**S** キーを押してアプリを保存します。

Git ソース管理を追加する

これでアプリを作成できたので、それを Git リポジトリに追加したいと思うかもしれません。 Visual Studio では、IDE から直接使用できる Git ツールで、その作業を簡単に行うことができます。

ヒント

Git は最も広く使用されている最新のバージョン コントロール システムであるため、プロフェッショナルな開発者にも、コードの作成を学習している方にも、Git は非常に便利です。 Git を初めてお使いになる場合は、https://git-scm.com/ の Web サイトから開始することをお勧めします。 そこには、チート シート、人気のオンライン ブック、Git の基本についてのビデオがあります。

コードを Git に関連付けるには、まず、コードを配置する新しい Git リポジトリを作成します。

  1. Visual Studio の右下隅にあるステータス バーで、 [ソース管理に追加] を選択し、 [Git] を選択します。

    [ソリューション エクスプローラー] ペインの下の Git ソース管理ボタンのスクリーンショット。[ソース管理に追加] ボタンが強調表示されています。

  2. [Git リポジトリの作成] ダイアログ ボックスで、GitHub にサインインします。

    [Git リポジトリの作成] ダイアログ ウィンドウのスクリーンショット。ここで GitHub にサインインできます。

    リポジトリ名は、フォルダーの場所に基づいて自動的に設定されます。 既定では、新しいリポジトリはプライベートになります。つまり、アクセスできるのは自分だけです。

    ヒント

    リポジトリがパブリックかプライベートかに関係なく、コードのバックアップをリモートの GitHub に安全に保存しておくことをお勧めします。 チームで作業していない場合でも、リモート リポジトリを使用すると、コードをご自分のすべてのコンピューターから利用できるようになります。

  3. [作成とプッシュ] を選択します。

    リポジトリを作成すると、ステータス バーに状態の詳細が表示されます。

    Visual Studio の [ソリューション エクスプローラー] ペインの下にあるリポジトリのステータス バーのスクリーンショット。

    矢印の付いた最初のアイコンには、現在のブランチにある出力/入力方向のコミットの数が表示されます。 このアイコンを使用して、入力方向のコミットをプルしたり、出力方向のコミットをプッシュしたりすることができます。 また、これらのコミットを最初に表示することもできます。 これを行うには、アイコンを選択し、 [View Outgoing/Incoming](出力/入力の表示) を選択します。

    鉛筆の 2 番目のアイコンは、コードに対する確定されていない変更の数を示しています。 このアイコンを選択すると、 [Git 変更] ウィンドウにこれらの変更が表示されます。

ご自分のアプリで Git を使用する方法の詳細については、「Visual Studio のバージョン コントロールに関するドキュメント」を参照してください。

確認: コードの完成

このチュートリアルでは、電卓アプリに多くの変更を加えました。 アプリでは、コンピューティング リソースがより効率的に処理され、ほとんどのユーザーの入力エラーが処理されるようになっています。

次に完全なコードをまとめて示します。


using System;

namespace Calculator
{
    class Calculator
    {
        public static double DoOperation(double num1, double num2, string op)
        {
            double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.

            // Use a switch statement to do the math.
            switch (op)
            {
                case "a":
                    result = num1 + num2;
                    break;
                case "s":
                    result = num1 - num2;
                    break;
                case "m":
                    result = num1 * num2;
                    break;
                case "d":
                    // Ask the user to enter a non-zero divisor.
                    if (num2 != 0)
                    {
                        result = num1 / num2;
                    }
                    break;
                // Return text for an incorrect option entry.
                default:
                    break;
            }
            return result;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            bool endApp = false;
            // Display title as the C# console calculator app.
            Console.WriteLine("Console Calculator in C#\r");
            Console.WriteLine("------------------------\n");

            while (!endApp)
            {
                // Declare variables and set to empty.
                string numInput1 = "";
                string numInput2 = "";
                double result = 0;

                // Ask the user to type the first number.
                Console.Write("Type a number, and then press Enter: ");
                numInput1 = Console.ReadLine();

                double cleanNum1 = 0;
                while (!double.TryParse(numInput1, out cleanNum1))
                {
                    Console.Write("This is not valid input. Please enter an integer value: ");
                    numInput1 = Console.ReadLine();
                }

                // Ask the user to type the second number.
                Console.Write("Type another number, and then press Enter: ");
                numInput2 = Console.ReadLine();

                double cleanNum2 = 0;
                while (!double.TryParse(numInput2, out cleanNum2))
                {
                    Console.Write("This is not valid input. Please enter an integer value: ");
                    numInput2 = Console.ReadLine();
                }

                // Ask the user to choose an operator.
                Console.WriteLine("Choose an operator from the following list:");
                Console.WriteLine("\ta - Add");
                Console.WriteLine("\ts - Subtract");
                Console.WriteLine("\tm - Multiply");
                Console.WriteLine("\td - Divide");
                Console.Write("Your option? ");

                string op = Console.ReadLine();

                try
                {
                    result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                    if (double.IsNaN(result))
                    {
                        Console.WriteLine("This operation will result in a mathematical error.\n");
                    }
                    else Console.WriteLine("Your result: {0:0.##}\n", result);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
                }

                Console.WriteLine("------------------------\n");

                // Wait for the user to respond before closing.
                Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
                if (Console.ReadLine() == "n") endApp = true;

                Console.WriteLine("\n"); // Friendly linespacing.
            }
            return;
        }
    }
}

次の手順

このチュートリアルの第 2 部、