C#の関数、メソッドって何?
関数の書き方や使い方が知りたい
引数ってどうやって書けばいいの?
publicって何?
こんにちは、エンジニアでC#ライターの遠藤です!
今回の記事では、コーディングの基礎になるメソッド、関数について解説致します。
この記事を読んでいただけると、C#における関数・メソッドの意味から使い方から関連する基礎知識までを得られるかと思います。
以下のような方は、ぜひお付き合いください!
- 関数・メソッドとは何か知りたい方
- 関数の使い方が知りたい方
- 細かな関連知識まで知りたい方
関数(メソッド)とは
関数・メソッドとは、一連の処理を一つにまとめて繰り返し使えるようにしたかたまりを言います。
繰り返し使えるようにすることで処理の重複を防いだり、メンテナンスしやすくなるなどの利点があります。
以下の例をご確認ください。
using System;
class Program
{
public void HelloWorld(string lang)
{
Console.WriteLine("Hello {0}!", lang);
}
public static void Main()
{
Program obj = new Program();
obj.HelloWorld("C#");
obj.HelloWorld("C++");
}
}
実行結果:
Hello C#! Hello C++!
上記のサンプルコードにおける「 HelloWorld()」 が関数・メソッドになります。HelloWorld()は、入力された言語を使って “Hello 言語 !” という文字列を出力する処理のかたまりです。
処理と実行結果から、”C#”, “C++”と2度 HelloWorld() が呼ばれている事がわかりますね。このようにして関数は繰り返し使うことができます。
「関数」と「メソッド」の違いは、定義が曖昧ではありますが、大きく言えば処理のかたまりを関数と言い、その中でオブジェクトにおける関数をメソッドと言います。C#はオブジェクト指向言語なので、「関数=メソッド」と捉えても特に不都合は無いかと思います。
関数の定義・使い方
それでは早速、関数の定義・使い方を覚えましょう!
関数の定義
関数を定義するさいの基本形は、以下のようになります。
class クラス名{ 戻り値の型 関数名() { //処理内容 } }
戻り値の型には、void(戻り値無し)を始め、int, string, booleanなど様々なものがあります。
また、関数名は基本的に英語で書くようにし、最初は大文字にしましょう。
先ほどの例では関数の最初に「public」という文字が入っていますが、こちらはアクセス修飾子と言います。アクセス修飾子については後ほど解説致します。
関数の呼び出し
関数の定義ができたところで、実際に呼び出してみましょう。
以下の例をご確認ください。処理の内容についてのコメントに注目してください。
using System;
class Program //クラスの定義
{
public void HelloWorld() //メソッドの定義
{
Console.WriteLine("Hello World!"); //文字列を出力する
Console.WriteLine("Let's enjoy C# life!");
}
public static void Main()
{
Program obj = new Program(); //クラスからインスタンスを生成
obj.HelloWorld(); //インスタンス.メソッド名()でメソッドを呼び出す
}
}
実際に呼び出すにはまず、その関数(メソッド)が属するクラスからインスタンスを生成します(サンプルの12行目)。
その後、「インスタンス名.メソッド名();」でメソッドを呼び出します(13行目)。このような流れで、関数は呼び出され実行されます。
引数のある関数
関数を呼び出すさいに、引数と呼ばれる値を渡す事ができます。引数を渡す事で、その値を使った処理をさせる事が可能です。
サンプルコード:
using System;
class Program //クラスの定義
{
public void HelloWorld(String lang) //関数名(引数の型 引数の値)
{
Console.WriteLine("Hello World!");
Console.WriteLine("Let's enjoy {0} life!", lang); //出力内容に引数の値を入れている
}
public static void Main()
{
Program obj = new Program();
obj.HelloWorld("C#"); //引数として、"C#"を渡している
}
}
実行結果:
Hello World! Let's enjoy C# life!
上記の例では、関数を呼び出すときに引数として “C#” という文字列を渡しています。関数の方ではこの文字列を受け取って、元々の文字列と組み合わせて出力しています。
関数を呼び出す所の処理を、”Java”や”C++”などに変えてみると、実行結果が変わる事がわかります。
引数を渡す場合の処理の違いとして、関数を定義する所では「戻り値の型 関数名(引数の型 引数の値){}」という風に宣言しています。この関数を呼び出すときに、「インスタンス名.関数名(引数の値)」とする事で、呼び出しができるようになります。
このとき、関数の方と呼び出す側で引数の型が一致している必要がありますので注意してください。
アクセス修飾子について
先ほど述べましたが、関数を宣言する際に出てきた「public」はアクセス修飾子と言います。アクセス修飾子は、その関数がどの範囲で呼び出せるかのアクセスレベルを定義する修飾子です。
アクセス修飾子には、以下のような種類があります。
種類 | アクセスできる範囲 |
---|---|
public | ライブラリ内外問わずアクセスできる |
private | 同じクラス内または同じ構造体内からしかアクセスできない |
protected | 同じクラス内か、そのクラスから派生したクラス内からのみアクセスできる |
internal | 同じライブラリ内からしかアクセスできない |
protected internal | 同じライブラリ内と、別のライブラリの派生クラス内からアクセスできる |
private protected | 同じクラスのコードか、そのクラスから派生した同じライブラリ内の型でのみアクセスできる |
コンストラクタについて
クラスとメソッドについて理解するうえで、コンストラクタは必ず知っておくべきメソッドです。コンストラクタは、インスタンスを生成したときに自動的に実行される関数で、そのクラスの初期化処理に使われます。
コンストラクタについては「(アクセス修飾子) クラス名(){//初期化処理}」というように、クラス名と同じ名前の関数として定義します。
コンストラクタについて詳しくは以下の記事で解説しています。
まとめ
今回の記事では、以下について解説致しました。
- 関数・メソッドとは?
- 関数の定義・使い方
- アクセス修飾子
- コンストラクタ
関数はプログラミングにおける基礎の基礎と言える内容です。ここで使い方を覚えて、関数・メソッドについてどんどん理解を進めていってください!