演習 - メソッドでパラメーターを使用する

完了

メソッドを作成するときは、多くの場合、使用するメソッドの情報を提供する必要があります。 メソッドによって使用される情報は、パラメーターと呼ばれます。 タスクを実行するために必要な数のパラメーターを指定するか、まったく指定しません。

多くの場合、用語 'parameter' と 'argument' は同じ意味で使用されます。 ただし、'parameter' はメソッド シグネチャ内の変数を参照します。 "argument" は、メソッドが呼び出されたときに渡される値です。

メソッドにパラメーターを追加する

メソッド内のパラメーターは変数と同様に機能します。 パラメーターは、データ型の後にパラメーターの名前を指定することによって定義されます。 パラメーターはメソッド シグネチャで宣言され、パラメーターの値はメソッド自体内で初期化されるのではなく、メソッド呼び出し元によって提供されます。 次のコードについて考えてみましょう。

	CountTo(5);

	void CountTo(int max) 
	{
		for (int i = 0; i < max; i++)
		{
			Console.Write($"{i}, ");
		}
	}

この例では、メソッドCountTomaxという名前の整数パラメーターを受け取ります。 パラメーターは、メソッドの for ループで参照されます。 CountToが呼び出されると、整数5が引数として指定されます。

この演習では、独自のメソッド パラメーターを作成して使用する方法について説明します。

コーディング環境を準備する

このモジュールには、デモ コードをビルドして実行するプロセスをガイドする実践的なアクティビティが含まれています。 これらのアクティビティを完了するために、開発環境として Visual Studio Code を使用することをお勧めします。 これらのアクティビティに Visual Studio Code を使用すると、世界中のプロフェッショナルが使用する開発環境でコードの記述と実行をより快適に行うことができます。

  1. Visual Studio Code を開きます。

    Visual Studio Code は、Windows の [スタート] メニュー (別の OS の場合は同等のリソース) を使用して開くことができます。

  2. Visual Studio Code の [ファイル] メニューで、[ フォルダーを開く] を選択します。

  3. [ フォルダーを開く] ダイアログで、Windows デスクトップ フォルダーに移動します。

    コード プロジェクトを保持するフォルダーの場所が異なる場合は、代わりにそのフォルダーの場所を使用できます。 このトレーニングでは、見つけやすく覚えやすい場所を用意することが重要です。

  4. [ フォルダーを開く ] ダイアログで、[フォルダーの選択] を 選択します

    作成者を信頼するかどうかを確認するセキュリティ ダイアログが表示された場合は、[ はい] を選択します。

  5. Visual Studio Code ターミナル メニューで、[ 新しいターミナル] を選択します。

    [ターミナル] パネルのコマンド プロンプトに、現在のフォルダーのフォルダー パスが表示されることを確認します。 例えば次が挙げられます。

    C:\Users\someuser\Desktop>
    

    サンドボックスやホストされた環境ではなく、独自の PC で作業していて、この C# シリーズの他の Microsoft Learn モジュールを完了している場合は、コード サンプル用のプロジェクト フォルダーが既に作成されている可能性があります。 その場合は、次の手順 (TestProject フォルダーにコンソール アプリを作成するために使用される) をスキップできます。

  6. ターミナル コマンド プロンプトで、指定したフォルダーに新しいコンソール アプリケーションを作成するには、 ./CsharpProjects/TestProject -o dotnet new コンソール を入力し、Enter キーを押します。

    この .NET CLI コマンドでは、.NET プログラム テンプレートを使用して、指定したフォルダーの場所に新しい C# コンソール アプリケーション プロジェクトを作成します。 このコマンドで [CsharpProjects] と [TestProject] のフォルダーが自動的に作成され、.csproj ファイルの名前として TestProject が使用されます。

  7. エクスプローラー パネルで、 CsharpProjects フォルダーを 展開します。

    [TestProject] フォルダーと、Program.cs という名前の C# プログラム ファイルと、TestProject.csproj という名前の C# プロジェクト ファイルの 2 つが表示されるはずです。

  8. エクスプローラー パネルで、エディター パネルでコード ファイルを表示するには、 Program.csを選択します。

  9. 既存のコード行を削除します。

    この C# コンソール プロジェクトを使用して、このモジュール中のコード サンプルを作成、ビルド、および実行します。

  10. [ターミナル] パネルを閉じます。

パラメーターを使用してメソッドを作成する

このタスクでは、スケジュールされた時刻を別の GMT タイム ゾーンに調整するメソッドを作成します。 メソッドは、時刻、現在のタイム ゾーン、および新しいタイム ゾーンの一覧を受け入れる必要があります。 それでは始めましょう。

  1. Visual Studio Code エディターに次のコードを入力します。

    int[] schedule = {800, 1200, 1600, 2000};
    
  2. パラメーターを使用してメソッドを作成するには、新しい空白行に次のコードを入力します。

    void DisplayAdjustedTimes(int[] times, int currentGMT, int newGMT) 
    {
    
    }
    

    パラメーターは、データ型の後に変数名を使用して、変数を宣言する方法と同様に宣言されていることに注意してください。 stringboolint、配列など、任意のデータ型のパラメーターを使用できます。 メソッド内の複数のパラメーターは、常にコンマで区切られます。

  3. DisplayAdjustedTimes メソッドに次のコードを入力します。

    int diff = 0;
    if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12)
    {
        Console.WriteLine("Invalid GMT");
    }
    

    変数はメソッド シグネチャで既に宣言されているため、 newGMT および currentGMT を宣言する必要はありません。 また、メソッドは呼び出し元がこれらの引数に割り当てられた値を指定することを前提としているため、変数を初期化しません。

    この手順では、時間差を格納する int diff を作成し、指定された GMT 値が -12 と 12 の間にあることを確認します。 Math.Absを使用すると数値の絶対値が得されるため、GMT 値が 12 より大きい場合は無効になります。

  4. 時間差を計算するには、 DisplayAdjustedTimes メソッドを次のように更新します。

    int diff = 0;
    if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12)
    {
        Console.WriteLine("Invalid GMT");
    }
    else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) 
    {
        diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT));
    } 
    else 
    {
        diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT));
    }
    

    このコードでは、GMT タイム ゾーンの絶対値を加算または減算して時間の差を取得する必要があるかどうかを確認します。 GMT 値が同じ符号 (正または負の両方) を共有する場合、時間の差は 2 つの数値の差と等しくなります。 GMT 値に反対の符号がある場合、差は 2 つの数値の合計と等しくなります。 時間は数百単位で表されるため、結果に 100 を乗算します。

  5. 結果を表示するには、 DisplayAdjustedTimes メソッドの末尾に次のコードを入力します。

    for (int i = 0; i < times.Length; i++) 
    {
        int newTime = (times[i] + diff) % 2400;
        Console.WriteLine($"{times[i]} -> {newTime}");
    }
    
  6. メソッドを呼び出すには、 int[] schedule 変数宣言の後に次のコードを入力します。

    DisplayAdjustedTimes(schedule, 6, -6);
    

    変数とリテラルの両方をメソッドの引数として指定できることに注意してください。 入力パラメーターを使用することで、メソッドはグローバル変数の値の使用に制限されません。

作業を確認する

このタスクでは、統合ターミナルからアプリケーションを実行し、コードが正しく動作していることを確認します。 始めましょう。

  1. Ctrl + S または Visual Studio Code ファイル メニューを使用して作業内容を保存します。

  2. 必要に応じて、Visual Studio Code の統合ターミナル パネルを開きます。

    [エクスプローラー] パネルで、TestProject フォルダーの場所にあるターミナルを開くには、[ TestProject] を右クリックし、[ 統合ターミナルで開く] を選択します。

  3. ターミナルのコマンド プロンプトで、「dotnet run」と入力します。

  4. コードによって次の出力が生成されることを確認します。

    800 -> 2000
    1200 -> 0
    1600 -> 400
    2000 -> 800
    

    コードによって生成された結果がそれとは異なる場合は、コードを確認し、エラーを見つけて更新する必要があります。 もう一度コードを実行して、問題が修正されたかどうかを確認します。 コードで期待される結果が生成されるまで、コードの更新と実行を続けます。

まとめ

これまでにパラメーターについて学習した内容を次に示します。

  • 情報は、パラメーターの形式でメソッドに渡すことができます。
  • パラメーターはメソッド シグネチャで宣言されます。
  • 複数のパラメーターはコンマで区切られます。
  • メソッドは、変数またはリテラル引数を受け取ることができます。