メソッドの構文を理解する
Console.WriteLine()やrandom.Next()など、いくつかの方法に既に慣れている場合があります。 これらのメソッドを使用してタスクを簡略化し、コードをより簡単にビルドできる方法を理解しているかもしれません。 このユニットでは、独自のメソッドを作成する方法について説明します。
メソッドのしくみ
メソッドを開発するプロセスは、メソッド シグネチャの作成から始まります。 メソッド シグネチャは、メソッドの戻り値の型、名前、および入力パラメーターを宣言します。 たとえば、次のようなメソッド シグネチャについて考えてみます。
void SayHello();
メソッド名は SayHello。 戻り値の型は void。つまり、メソッドはデータを返しません。 ただし、メソッドは、 bool、 int、 double、配列など、任意のデータ型の値を返すことができます。 メソッド パラメーターがある場合は、かっこ ()に含める必要があります。 メソッドは、任意のデータ型の複数のパラメーターを受け取ることができます。 この例では、メソッドにはパラメーターがありません。
メソッドを実行する前に、定義を追加する必要があります。 メソッド定義では、角かっこ {} を使用して、メソッドの呼び出し時に実行されるコードを格納します。 例えば次が挙げられます。
void SayHello()
{
Console.WriteLine("Hello World!");
}
これで、メソッドは呼び出されるたびに Hello World! 出力されます。
メソッドの呼び出し
メソッドは、その名前を使用して、必要な引数を含めて呼び出されます。 次の点を考慮してください。
Console.Write("Input!");
文字列 "Input!" は、 Write メソッドに指定された引数です。
メソッドは、定義の前または後に呼び出すことができます。 たとえば、 SayHello メソッドは、次の構文を使用して定義して呼び出すことができます。
SayHello();
void SayHello()
{
Console.WriteLine("Hello World!");
}
呼び出す前にメソッドを定義する必要はありません。 この柔軟性により、必要に応じてコードを整理できます。 プログラムの最後にすべてのメソッドを定義するのが一般的です。 例えば次が挙げられます。
int[] a = {1,2,3,4,5};
Console.WriteLine("Contents of Array:");
PrintArray();
void PrintArray()
{
foreach (int x in a)
{
Console.Write($"{x} ");
}
Console.WriteLine();
}
メソッドの実行
メソッドを呼び出すと、メソッド本体のコードが実行されます。 つまり、実行制御はメソッド呼び出し元からメソッドに渡されます。 メソッドの実行が完了すると、コントロールが呼び出し元に返されます。 たとえば、次のコードを考えてみましょう。
Console.WriteLine("Before calling a method");
SayHello();
Console.WriteLine("After calling a method");
void SayHello()
{
Console.WriteLine("Hello World!");
}
このコードでは、次の出力が表示されます。
Before calling a method
Hello World!
After calling a method
メソッドが定義されると、それを使用する必要がある回数だけ、いつでも呼び出すことができます。
if-elseステートメント、for ループ、switch ステートメント内のメソッドを使用して、変数を初期化することもできます。
ベスト プラクティス
メソッド名を選択するときは、名前を簡潔にし、メソッドが実行するタスクを明確にすることが重要です。 メソッド名はパスカル大文字にする必要があり、通常は数字で始めることはできません。 パラメーターの名前は、パラメーターが表す情報の種類を記述する必要があります。 次のメソッド シグネチャについて考えてみましょう。
void ShowData(string a, int b, int c);
void DisplayDate(string month, int day, int year);
2 番目のメソッドは、表示されるデータの種類を記述し、パラメーターのわかりやすい名前を提供します。
これで基本を理解できました。これで、独自のメソッドの記述を開始する準備ができました。