C#メソッドとは?定義・呼び出し・戻り値・引数の基本を初心者向けにわかりやすく解説
はじめに
C#を学び始めると、必ず出てくる重要な考え方が「メソッド」です。メソッドは、プログラムの中で特定の処理をひとまとめにしたものです。たとえば「画面に文字を表示する」「2つの数値を足す」「入力された名前を使ってメッセージを作る」といった処理を、名前を付けて再利用できるようにします。
C#メソッドを理解すると、同じ処理を何度も書かずに済み、プログラムが読みやすくなります。また、処理を小さな単位に分けられるため、エラーの原因を見つけやすくなるというメリットもあります。
この記事では、C#メソッドとは何か、定義方法、呼び出し方、戻り値、引数、staticメソッドとインスタンスメソッドの違いまで、初心者向けにわかりやすく解説します。
1. C#メソッドとは?
1-1. メソッドの基本的な意味
C#のメソッドとは、特定の処理をまとめて名前を付けたものです。
たとえば、次のような処理があるとします。
C#Console.WriteLine("こんにちは");
この処理を何度も使いたい場合、毎回同じコードを書くのは大変です。そこで、メソッドとしてまとめることができます。
C#static void SayHello()
{
Console.WriteLine("こんにちは");
}
このように書くと、SayHelloという名前で処理を呼び出せるようになります。
C#SayHello();
メソッドは「処理に名前を付けて、必要なときに呼び出す仕組み」と考えると理解しやすいです。
1-2. メソッドを使う目的
C#でメソッドを使う主な目的は、プログラムを整理し、同じ処理を再利用するためです。
たとえば、同じ計算処理をプログラム内で何度も使う場合、そのたびに計算式を書くとコードが長くなります。また、あとから計算方法を変更したいときに、すべての箇所を修正しなければなりません。
メソッドにしておけば、処理を1か所にまとめられます。
C#static int Add(int a, int b)
{
return a + b;
}
このメソッドを使えば、必要な場所で次のように呼び出せます。
C#int result = Add(3, 5);
Console.WriteLine(result);
メソッドを使うことで、コードの重複を減らし、読みやすく、修正しやすいプログラムになります。
1-3. C#におけるメソッドとクラスの関係
C#では、メソッドは基本的にクラスの中に定義します。クラスは、データや処理をまとめるための設計図のようなものです。
たとえば、次のコードでは、Programクラスの中にSayHelloメソッドがあります。
C#class Program
{
static void SayHello()
{
Console.WriteLine("こんにちは");
}
static void Main()
{
SayHello();
}
}
C#では、メソッドだけを単独で書くのではなく、クラスの中に配置するのが基本です。最近のC#ではトップレベルステートメントという簡略化された書き方もありますが、メソッドの基本を理解するうえでは、まずクラスの中にメソッドを書く形を覚えるとよいでしょう。
1-4. 初心者がメソッドでつまずきやすいポイント
初心者がC#メソッドでつまずきやすいポイントには、次のようなものがあります。
まず、メソッドを「定義すること」と「呼び出すこと」の違いです。メソッドを作っただけでは処理は実行されません。実行するには、メソッド名を書いて呼び出す必要があります。
次に、戻り値と引数の違いです。引数はメソッドに渡す値で、戻り値はメソッドから返ってくる値です。
また、staticメソッドとインスタンスメソッドの違いも混乱しやすい部分です。staticメソッドはクラス名から直接呼び出せるメソッドで、インスタンスメソッドはオブジェクトを作ってから呼び出すメソッドです。
最初は難しく感じるかもしれませんが、基本構文を理解し、簡単なコードを何度も書くことで自然に慣れていきます。
2. C#メソッドの基本構文
2-1. メソッド定義の書き方
C#メソッドの基本構文は、次のようになります。
C#アクセス修飾子 戻り値の型 メソッド名(引数リスト)
{
処理内容
}
たとえば、画面にメッセージを表示するメソッドは次のように書けます。
C#public void ShowMessage()
{
Console.WriteLine("メッセージを表示します");
}
この例では、publicがアクセス修飾子、voidが戻り値の型、ShowMessageがメソッド名、()の中が引数リストです。
2-2. アクセス修飾子とは
アクセス修飾子とは、そのメソッドをどこから使えるかを指定するキーワードです。
代表的なアクセス修飾子には、次のようなものがあります。
publicは、ほかのクラスからも呼び出せることを表します。privateは、同じクラスの中からだけ呼び出せることを表します。
C#public void PublicMethod()
{
Console.WriteLine("外部から呼び出せます");
}
private void PrivateMethod()
{
Console.WriteLine("同じクラス内でのみ呼び出せます");
}
初心者のうちは、まずpublicとprivateの違いを覚えれば十分です。外部から使いたいメソッドにはpublic、クラス内部だけで使いたいメソッドにはprivateを使います。
2-3. 戻り値の型とは
戻り値の型とは、メソッドが処理結果として返す値の型のことです。
たとえば、整数を返すメソッドならint、文字列を返すメソッドならstringを指定します。
C#int GetNumber()
{
return 10;
}
string GetName()
{
return "田中";
}
値を返さないメソッドの場合は、voidを指定します。
C#void ShowMessage()
{
Console.WriteLine("値を返さないメソッドです");
}
voidは「戻り値なし」という意味です。
2-4. メソッド名の付け方
メソッド名は、そのメソッドが何をするのかがわかる名前にすることが大切です。
C#では、メソッド名にパスカルケースを使うのが一般的です。パスカルケースとは、単語の先頭を大文字にする書き方です。
C#ShowMessage()
CalculateTotal()
GetUserName()
たとえば、数値を足すメソッドならAdd、メッセージを表示するメソッドならShowMessageのように、動作がわかる名前にすると読みやすくなります。
悪い例として、次のような名前は処理内容がわかりにくいです。
C#Do()
Test()
A()
メソッド名は、プログラムを読む人にとっての説明にもなります。なるべく具体的でわかりやすい名前を付けましょう。
2-5. 引数リストの役割
引数リストは、メソッドに渡す値を指定する部分です。メソッド名の後ろにある()の中に書きます。
C#void ShowName(string name)
{
Console.WriteLine(name);
}
この例では、string nameが引数です。ShowNameメソッドを呼び出すときに、文字列を渡すことができます。
C#ShowName("佐藤");
引数を使うと、メソッドの外から値を受け取り、その値に応じて処理を変えることができます。
2-6. メソッド本体に処理を書く方法
メソッド本体とは、{}の中に書く処理のことです。
C#void Greet()
{
Console.WriteLine("おはようございます");
Console.WriteLine("今日もがんばりましょう");
}
メソッドが呼び出されると、{}の中に書かれた処理が上から順番に実行されます。
戻り値があるメソッドの場合は、return文を使って値を返します。
C#int GetScore()
{
return 100;
}
メソッド本体には、変数宣言、条件分岐、繰り返し処理、計算処理など、さまざまな処理を書くことができます。
3. C#メソッドの定義方法
3-1. 戻り値なしのメソッドを定義する
戻り値なしのメソッドを定義するには、戻り値の型にvoidを指定します。
C#static void ShowHello()
{
Console.WriteLine("こんにちは");
}
このメソッドは、画面に文字を表示するだけで、値は返しません。
呼び出すときは、次のように書きます。
C#ShowHello();
voidメソッドは、結果を返す必要がない処理に使います。たとえば、画面表示、ログ出力、データの保存処理などが該当します。
3-2. 戻り値ありのメソッドを定義する
戻り値ありのメソッドでは、戻り値の型を指定し、return文で値を返します。
C#static int GetNumber()
{
return 10;
}
このメソッドは、int型の値を返します。
呼び出すときは、戻り値を変数に代入できます。
C#int number = GetNumber();
Console.WriteLine(number);
戻り値の型とreturnで返す値の型は一致している必要があります。intを返すメソッドで文字列を返すことはできません。
3-3. 引数なしのメソッドを定義する
引数なしのメソッドは、()の中に何も書きません。
C#static void ShowDate()
{
Console.WriteLine("今日はC#を学習します");
}
呼び出すときも、()の中には何も書きません。
C#ShowDate();
引数なしのメソッドは、外部から値を受け取らなくても実行できる処理に使います。
3-4. 引数ありのメソッドを定義する
引数ありのメソッドは、()の中に型と変数名を書きます。
C#static void ShowName(string name)
{
Console.WriteLine("名前は" + name + "です");
}
このメソッドは、string型のnameという引数を受け取ります。
呼び出すときは、実際の値を渡します。
C#ShowName("山田");
実行すると、次のように表示されます。
C#名前は山田です
引数を使うことで、同じメソッドでも渡す値によって結果を変えられます。
3-5. 複数の引数を持つメソッドを定義する
複数の引数を持つメソッドでは、引数をカンマで区切って書きます。
C#static void ShowProfile(string name, int age)
{
Console.WriteLine("名前:" + name);
Console.WriteLine("年齢:" + age);
}
呼び出すときも、定義した順番に値を渡します。
C#ShowProfile("鈴木", 25);
引数の順番や型が間違っているとエラーになります。string name, int ageと定義した場合は、最初に文字列、次に整数を渡す必要があります。
4. C#メソッドの呼び出し方
4-1. メソッドを呼び出す基本構文
メソッドを呼び出す基本構文は、次のようになります。
C#メソッド名();
引数がある場合は、()の中に値を指定します。
C#メソッド名(値);
たとえば、次のようなメソッドがあるとします。
C#static void SayHello()
{
Console.WriteLine("こんにちは");
}
このメソッドを呼び出すには、次のように書きます。
C#SayHello();
メソッドは定義しただけでは実行されません。必ず呼び出すことで処理が動きます。
4-2. 同じクラス内のメソッドを呼び出す
同じクラス内にあるメソッドは、基本的にメソッド名だけで呼び出せます。
C#class Program
{
static void Main()
{
ShowMessage();
}
static void ShowMessage()
{
Console.WriteLine("同じクラス内のメソッドです");
}
}
この例では、MainメソッドからShowMessageメソッドを呼び出しています。
同じクラス内であっても、staticメソッドからインスタンスメソッドを直接呼び出すことはできません。この点は初心者がよくつまずくポイントです。
4-3. 別クラスのメソッドを呼び出す
別クラスのメソッドを呼び出すには、そのメソッドがpublicである必要があります。
C#class Message
{
public void Show()
{
Console.WriteLine("別クラスのメソッドです");
}
}
このメソッドを呼び出すには、まずクラスからオブジェクトを作ります。
C#class Program
{
static void Main()
{
Message message = new Message();
message.Show();
}
}
new Message()でMessageクラスのオブジェクトを作り、message.Show()でメソッドを呼び出しています。
4-4. staticメソッドを呼び出す
staticメソッドは、オブジェクトを作らずに呼び出せるメソッドです。同じクラス内であれば、メソッド名だけで呼び出せます。
C#class Program
{
static void Main()
{
ShowHello();
}
static void ShowHello()
{
Console.WriteLine("staticメソッドです");
}
}
別クラスのstaticメソッドを呼び出す場合は、クラス名を使います。
C#class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
class Program
{
static void Main()
{
int result = Calculator.Add(3, 5);
Console.WriteLine(result);
}
}
Calculator.Add(3, 5)のように、クラス名とメソッド名をドットでつないで呼び出します。
4-5. インスタンスメソッドを呼び出す
インスタンスメソッドは、クラスからオブジェクトを作ってから呼び出すメソッドです。
C#class Person
{
public void SayName()
{
Console.WriteLine("私は田中です");
}
}
呼び出すときは、次のように書きます。
C#class Program
{
static void Main()
{
Person person = new Person();
person.SayName();
}
}
インスタンスメソッドは、オブジェクトごとに異なるデータを扱いたいときによく使います。たとえば、人ごとに名前や年齢を持たせ、その情報を使って処理を行う場合に便利です。
5. C#メソッドの戻り値
5-1. 戻り値とは
戻り値とは、メソッドの処理結果として呼び出し元に返す値のことです。
たとえば、2つの数値を足した結果を返すメソッドは、次のように書けます。
C#static int Add(int a, int b)
{
return a + b;
}
このメソッドは、a + bの計算結果を呼び出し元に返します。
C#int result = Add(10, 20);
Console.WriteLine(result);
この場合、resultには30が代入されます。
5-2. return文の使い方
return文は、メソッドから値を返すために使います。
C#static string GetMessage()
{
return "こんにちは";
}
戻り値の型がstringなので、returnでは文字列を返しています。
return文が実行されると、その時点でメソッドの処理は終了します。
C#static int CheckNumber(int number)
{
if (number > 0)
{
return 1;
}
return 0;
}
この例では、numberが0より大きい場合は1を返し、それ以外の場合は0を返します。
5-3. voidメソッドとの違い
voidメソッドは戻り値を返しません。一方、intやstringなどの型を指定したメソッドは、必ずその型の値を返す必要があります。
戻り値なしの例です。
C#static void ShowMessage()
{
Console.WriteLine("表示だけを行います");
}
戻り値ありの例です。
C#static int GetNumber()
{
return 100;
}
voidメソッドは処理を実行することが目的で、戻り値ありのメソッドは処理結果を受け取って利用することが目的です。
5-4. 戻り値を変数に代入する方法
戻り値は、変数に代入して使うことができます。
C#static int Multiply(int a, int b)
{
return a * b;
}
static void Main()
{
int answer = Multiply(4, 5);
Console.WriteLine(answer);
}
この例では、Multiply(4, 5)の戻り値である20がanswerに代入されます。
戻り値は、変数に代入せずにそのまま使うこともできます。
C#Console.WriteLine(Multiply(4, 5));
ただし、あとで何度も使う値であれば、変数に代入しておくと読みやすくなります。
5-5. 戻り値を使うときの注意点
戻り値を使うときは、戻り値の型に注意しましょう。
たとえば、次のメソッドはint型の値を返します。
C#static int GetAge()
{
return 20;
}
この戻り値をstring型の変数にそのまま代入することはできません。
C#// エラーになる例
string age = GetAge();
正しくは、int型の変数に代入します。
C#int age = GetAge();
また、戻り値ありのメソッドでは、すべての処理の流れで値が返される必要があります。条件分岐がある場合は、どの条件でもreturnされるように注意しましょう。
6. C#メソッドの引数
6-1. 引数とは
引数とは、メソッドに渡す値のことです。引数を使うと、メソッドの外から値を受け取り、その値を使って処理できます。
C#static void ShowMessage(string message)
{
Console.WriteLine(message);
}
このメソッドは、messageという文字列を受け取って表示します。
C#ShowMessage("C#を勉強中です");
引数を使うことで、同じメソッドでも違う値を使って処理できます。
6-2. 仮引数と実引数の違い
仮引数とは、メソッドを定義するときに書く変数のことです。
C#static void ShowName(string name)
{
Console.WriteLine(name);
}
この例では、nameが仮引数です。
一方、実引数とは、メソッドを呼び出すときに実際に渡す値のことです。
C#ShowName("高橋");
この例では、"高橋"が実引数です。
つまり、定義側に書くのが仮引数、呼び出し側で渡すのが実引数です。
6-3. 引数に値を渡す方法
引数に値を渡すには、メソッド呼び出し時に()の中へ値を書きます。
C#static void ShowAge(int age)
{
Console.WriteLine("年齢は" + age + "歳です");
}
呼び出し方は次のとおりです。
C#ShowAge(30);
実行すると、次のように表示されます。
C#年齢は30歳です
引数の型がintなので、整数を渡す必要があります。文字列を渡すとエラーになります。
6-4. 複数の引数を渡す方法
複数の引数を渡す場合は、カンマで区切ります。
C#static void ShowUser(string name, int age)
{
Console.WriteLine(name + "さんは" + age + "歳です");
}
呼び出し時も、定義した順番に値を渡します。
C#ShowUser("伊藤", 28);
この場合、nameには"伊藤"、ageには28が入ります。
引数の順番を間違えるとエラーになる場合があります。特に、複数の引数があるメソッドでは、どの順番で何を渡すのかを確認しましょう。
6-5. 引数の型を間違えたときのエラー
引数の型を間違えると、コンパイルエラーになります。
たとえば、次のメソッドはint型の引数を受け取ります。
C#static void ShowNumber(int number)
{
Console.WriteLine(number);
}
正しい呼び出し方は次のとおりです。
C#ShowNumber(10);
しかし、次のように文字列を渡すとエラーになります。
C#// エラーになる例
ShowNumber("10");
"10"は文字列であり、10は整数です。見た目は似ていますが、C#では型が違います。
型を間違えた場合は、メソッド定義の引数の型と、呼び出し時に渡している値の型を確認しましょう。
7. C#メソッドの代表的な種類
7-1. staticメソッド
staticメソッドは、クラスに属するメソッドです。オブジェクトを作らずに呼び出せます。
C#class MathHelper
{
public static int Square(int number)
{
return number * number;
}
}
呼び出すときは、クラス名を使います。
C#int result = MathHelper.Square(5);
Console.WriteLine(result);
staticメソッドは、特定のオブジェクトの状態に依存しない処理に向いています。計算処理や共通処理などによく使われます。
7-2. インスタンスメソッド
インスタンスメソッドは、オブジェクトに属するメソッドです。呼び出すには、まずクラスからオブジェクトを作成します。
C#class Person
{
public string Name;
public void SayHello()
{
Console.WriteLine("こんにちは、" + Name + "です");
}
}
呼び出し例です。
C#Person person = new Person();
person.Name = "佐々木";
person.SayHello();
インスタンスメソッドは、オブジェクトごとのデータを使った処理に向いています。この例では、personオブジェクトが持つNameの値を使ってメッセージを表示しています。
7-3. コンストラクタとの違い
コンストラクタは、クラスからオブジェクトを作るときに自動的に呼び出される特別なメソッドです。
通常のメソッドとは違い、コンストラクタには戻り値の型を書きません。また、名前はクラス名と同じにします。
C#class Person
{
public string Name;
public Person(string name)
{
Name = name;
}
public void SayHello()
{
Console.WriteLine("こんにちは、" + Name + "です");
}
}
使い方は次のとおりです。
C#Person person = new Person("田中");
person.SayHello();
コンストラクタは、オブジェクトの初期設定を行うために使います。一方、通常のメソッドは、必要なタイミングで呼び出して処理を実行するために使います。
7-4. オーバーロードされたメソッド
メソッドのオーバーロードとは、同じ名前のメソッドを複数定義することです。ただし、引数の数や型が異なる必要があります。
C#static void Show(int number)
{
Console.WriteLine(number);
}
static void Show(string text)
{
Console.WriteLine(text);
}
この場合、引数に整数を渡すとint版のShowが呼ばれ、文字列を渡すとstring版のShowが呼ばれます。
C#Show(100);
Show("こんにちは");
オーバーロードを使うと、似た処理に同じメソッド名を使えるため、コードがわかりやすくなります。
7-5. Mainメソッドの役割
Mainメソッドは、C#プログラムの実行開始地点になる特別なメソッドです。
C#class Program
{
static void Main()
{
Console.WriteLine("プログラム開始");
}
}
プログラムを実行すると、まずMainメソッドの中の処理が実行されます。
Mainメソッドからほかのメソッドを呼び出すことで、プログラム全体の処理を進めていきます。
C#class Program
{
static void Main()
{
SayHello();
}
static void SayHello()
{
Console.WriteLine("こんにちは");
}
}
初心者のうちは、Mainメソッドは「プログラムが最初に動き出す場所」と覚えておくとよいでしょう。
8. C#メソッドのサンプルコード
8-1. 文字列を表示するメソッド
まずは、文字列を表示するだけの簡単なメソッドです。
C#class Program
{
static void Main()
{
ShowMessage();
}
static void ShowMessage()
{
Console.WriteLine("C#のメソッドを学習中です");
}
}
ShowMessageメソッドは、画面に文字列を表示する処理をまとめています。MainメソッドからShowMessage()を呼び出すことで、処理が実行されます。
8-2. 数値を計算して返すメソッド
次は、数値を計算して結果を返すメソッドです。
C#class Program
{
static void Main()
{
int result = Add(10, 20);
Console.WriteLine(result);
}
static int Add(int a, int b)
{
return a + b;
}
}
Addメソッドは、2つの整数を受け取り、その合計を返します。戻り値の型がintなので、return a + b;で整数を返しています。
8-3. 引数を使って結果を変えるメソッド
引数を使うと、渡す値によって結果を変えられます。
C#class Program
{
static void Main()
{
Greet("田中");
Greet("佐藤");
}
static void Greet(string name)
{
Console.WriteLine("こんにちは、" + name + "さん");
}
}
このコードでは、同じGreetメソッドを呼び出していますが、渡す名前が違うため表示される内容も変わります。
8-4. クラス内でメソッドを使い分ける例
複数のメソッドをクラス内で使い分ける例を見てみましょう。
C#class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public int Subtract(int a, int b)
{
return a - b;
}
}
class Program
{
static void Main()
{
Calculator calculator = new Calculator();
int sum = calculator.Add(10, 5);
int difference = calculator.Subtract(10, 5);
Console.WriteLine("足し算:" + sum);
Console.WriteLine("引き算:" + difference);
}
}
この例では、Calculatorクラスの中にAddメソッドとSubtractメソッドを定義しています。処理ごとにメソッドを分けることで、コードの役割がわかりやすくなります。
8-5. 初心者向けの簡単な練習問題
C#メソッドを理解するには、自分でコードを書いて練習することが大切です。次のような練習をしてみましょう。
まず、名前を受け取って「こんにちは、〇〇さん」と表示するメソッドを作ります。
C#static void SayHello(string name)
{
Console.WriteLine("こんにちは、" + name + "さん");
}
次に、2つの数値を受け取って掛け算の結果を返すメソッドを作ります。
C#static int Multiply(int a, int b)
{
return a * b;
}
最後に、年齢を受け取って成人かどうかを判定するメソッドを作ります。
C#static bool IsAdult(int age)
{
return age >= 18;
}
これらのメソッドをMainメソッドから呼び出して、結果を確認してみましょう。定義と呼び出しをセットで練習すると、メソッドの仕組みが理解しやすくなります。
9. C#メソッドでよくあるエラーと対処法
9-1. メソッド名のスペルミス
メソッド名のスペルを間違えると、C#はそのメソッドを見つけられません。
C#static void ShowMessage()
{
Console.WriteLine("こんにちは");
}
static void Main()
{
ShowMesage(); // スペルミス
}
この例では、定義されているメソッド名はShowMessageですが、呼び出し側ではShowMesageと書いています。
対処法は、定義したメソッド名と呼び出し時のメソッド名が完全に一致しているか確認することです。C#では大文字と小文字も区別されます。
9-2. 引数の数が合わないエラー
メソッドに必要な引数の数と、呼び出し時に渡す値の数が違うとエラーになります。
C#static void ShowName(string name)
{
Console.WriteLine(name);
}
static void Main()
{
ShowName(); // 引数が足りない
}
ShowNameメソッドはstring型の引数を1つ必要とします。そのため、呼び出し時にも値を1つ渡す必要があります。
C#ShowName("山田");
エラーが出たら、メソッド定義の引数リストを確認し、呼び出し時の値の数が合っているか見直しましょう。
9-3. 戻り値の型が合わないエラー
戻り値の型とreturnで返す値の型が合わない場合もエラーになります。
C#static int GetNumber()
{
return "10"; // エラー
}
このメソッドはint型を返すと定義されていますが、実際には文字列を返しています。
正しくは次のように書きます。
C#static int GetNumber()
{
return 10;
}
戻り値の型を確認し、その型に合った値を返すようにしましょう。
9-4. staticとインスタンスの呼び出し間違い
staticメソッドとインスタンスメソッドの呼び出し方を間違えるとエラーになります。
たとえば、次のようなインスタンスメソッドがあります。
C#class Person
{
public void SayHello()
{
Console.WriteLine("こんにちは");
}
}
このメソッドをクラス名から直接呼び出すことはできません。
C#// エラーになる例
Person.SayHello();
正しくは、オブジェクトを作ってから呼び出します。
C#Person person = new Person();
person.SayHello();
一方、staticメソッドはクラス名から呼び出せます。
C#class Helper
{
public static void Show()
{
Console.WriteLine("staticメソッドです");
}
}
Helper.Show();
staticが付いているかどうかを確認すると、呼び出し方を判断しやすくなります。
9-5. return文を書き忘れた場合
戻り値ありのメソッドでは、return文を書き忘れるとエラーになります。
C#static int Add(int a, int b)
{
int result = a + b;
// returnがない
}
このメソッドはint型の値を返す必要があります。そのため、次のようにreturn文を書きます。
C#static int Add(int a, int b)
{
int result = a + b;
return result;
}
void以外の型を指定したメソッドでは、必ず値を返す必要があると覚えておきましょう。
10. C#メソッドを理解するための学習ポイント
10-1. まずは定義と呼び出しをセットで覚える
C#メソッドを理解するには、まず「定義」と「呼び出し」をセットで覚えることが大切です。
メソッドを定義するだけでは、処理は実行されません。
C#static void Hello()
{
Console.WriteLine("こんにちは");
}
このメソッドを実行するには、呼び出しが必要です。
C#Hello();
初心者のうちは、メソッドを作ったら必ずMainメソッドから呼び出して、実行結果を確認する習慣をつけましょう。
10-2. void・return・引数の違いを整理する
メソッドを学ぶときは、void、return、引数の違いを整理することが重要です。
voidは戻り値がないことを表します。returnはメソッドから値を返すために使います。引数はメソッドに値を渡すために使います。
C#static void Show(string message)
{
Console.WriteLine(message);
}
このメソッドは、引数を受け取りますが、戻り値はありません。
C#static int Add(int a, int b)
{
return a + b;
}
このメソッドは、引数を受け取り、戻り値を返します。
このように、メソッドごとに「値を受け取るのか」「値を返すのか」を意識すると理解しやすくなります。
10-3. サンプルコードを自分で書いて確認する
C#メソッドは、読むだけでなく実際に書いて動かすことで理解が深まります。
最初は、次のような簡単なメソッドから練習するとよいでしょう。
C#static void PrintText()
{
Console.WriteLine("練習中です");
}
次に、引数を使ったメソッドを書きます。
C#static void PrintText(string text)
{
Console.WriteLine(text);
}
さらに、戻り値のあるメソッドも書いてみましょう。
C#static int DoubleNumber(int number)
{
return number * 2;
}
コードを書いたら、呼び出し方や実行結果を確認します。エラーが出た場合も、メソッド名、引数、戻り値の型を見直すことで原因を見つけやすくなります。
10-4. クラスとオブジェクトの基本もあわせて学ぶ
C#メソッドは、クラスやオブジェクトと深く関係しています。そのため、メソッドだけでなく、クラスとオブジェクトの基本もあわせて学ぶことが大切です。
クラスは設計図、オブジェクトはその設計図から作られた実体と考えると理解しやすいです。
C#class Dog
{
public void Bark()
{
Console.WriteLine("ワン");
}
}
このDogクラスからオブジェクトを作り、メソッドを呼び出します。
C#Dog dog = new Dog();
dog.Bark();
このように、インスタンスメソッドはオブジェクトを通して呼び出します。C#を本格的に学ぶうえで、メソッド、クラス、オブジェクトの関係を理解することはとても重要です。
まとめ
C#メソッドとは、特定の処理をまとめて名前を付け、必要なときに呼び出せるようにする仕組みです。メソッドを使うことで、コードの重複を減らし、プログラムを読みやすく、管理しやすくできます。
メソッドの基本構文は、アクセス修飾子、戻り値の型、メソッド名、引数リスト、メソッド本体で構成されます。戻り値がない場合はvoidを使い、戻り値がある場合はintやstringなどの型を指定してreturn文で値を返します。
また、引数を使うことで、メソッドの外から値を受け取り、処理内容を柔軟に変えられます。引数には型があり、呼び出し時には定義された型や数に合った値を渡す必要があります。
C#メソッドには、staticメソッドやインスタンスメソッド、オーバーロードされたメソッドなど、さまざまな種類があります。初心者のうちは、まず「メソッドを定義する」「メソッドを呼び出す」「引数を渡す」「戻り値を受け取る」という基本をしっかり押さえることが大切です。
C#メソッドは、プログラミングの基礎であり、今後クラス、オブジェクト、オブジェクト指向を学ぶうえでも欠かせない知識です。簡単なサンプルコードを自分で書きながら、少しずつ理解を深めていきましょう。

