C#での関数の使い方。
こんにちは。みなみんです。
前回の続き、C#入門シリーズの記事です。
今回は、C#での関数の使い方について書きました。
目次
今回使用する環境
開発環境:Visual Studio Community 2019
使用するプロジェクトテンプレート:ConsoleApplication
「ConsoleApplication」
これはWindows版のVSでもMacOS版のVSでも使えるテンプレです。
ちなみに、今回筆者が使用するのはMacOS版のVSを使います。
(Visual Studio for Mac)
どちらでも、構文は同じなので心配しないでくださいね。
実行/結果の表示の方法
「static void Main(string...){ 」の中身(Gist)
紹介するコードは基本的にそこに書いて欲しい。
構文的に他の場所で書いてしまうと書いている構文があっていてもエラーになる。
そして、コンソールに文字列等を出力するにはConsole.WriteLine()を使う。
関数の使い方
前回の記事でも紹介したように、こう書きます。例えば
Console.WriteLine("Hello"); //コンソールに出力する関数。
Math.Sqrt(10); //√10の値を求める関数。
でしたね。
関数とは数学でも一次関数、二次関数とかって言いますよね。
その認識で間違いはないと思います。
ちなみに、関数を英語で「Function」(ファンクション)と言います。
JavaScriptをいじった事がある方は知っているかもしれないが、
関数を定義する際、functionという予約語を使うと思います。
function Add(){ }
もし、興味があったら調べてみてくださいね。
返り値、戻り値
では、以下のコードを書いて実行してみてほしい。
Console.WriteLine(Math.Sqrt(10));
コンソール上では「3.1622776601683795」と出てきたと思います。
「Math.Sqrt(10)」で出てこないのかと思った人いませんか。
残念ながら、これは「文字列」ではなく、関数なので√10の値が出てくるのですね。
これは引数で与えられた値から目的の値を求めて、その目的の値が出力されたという事なんですね。
Console.WriteLine(Math.Sqrt(10));
↓
Console.WriteLine(3.1622776601683795);
>> 3.1622776601683795
要するに関数が値に化けたって事ですよね。
これを「値を返す」というんです。
また、その返された値の事を「返り値」、「戻り値」とも言うんですね。
関数の定義
例えば、こういうコードがあったとしよう。(Gist)
予定日をコンソール上に打ち出す機能のソフトウェアという仮定で、実行すると現在は「バイト」という名称の予定日時がコンソール上表示される状態です。
もし、新たな予定が入った時、また6行分書かないといけないですよね。
単純計算で、
「予定個数」×「予定1つ当たりのコード行数」
の行数だけソースコードを書く計算です。
これではめちゃくちゃ面倒で効率が悪いです。
そこで、「関数」の出番です。
まずは、関数を定義したサンプルをご覧ください。(Gist)
これは先ほどの処理をまとめたものです。
AddSchedule("文字列");という関数を実行すると最初のコードと全く同じ振る舞いをします。
これならいくつ予定が入ってもまだ書ける範囲ですね。(Gist)
関数の定義の構文は以下のように定義します。
戻り値の種類 関数名(引数の型 引数名、、、)
{
処理;...return 戻り値;
}
また、今回紹介したような関数のように戻り値(返り値)が無い場合は以下の通り。
void 関数名(引数の型 引数名、、、)
{
処理;....
}
引数はいくつでも設定する事ができる。
設定した引数は関数の中だけで使うことのできる「変数」として使う事ができる。
(特定の範囲でしか使用ができない変数を「ローカル変数」と呼ぶ。)
改良した関数を紹介しておく。(Gist)
引数はいくつでも設定できるので、第一引数に「予定名」、第2引数に「日時」とした。
そして、更なる理解の為に、
いくつか関数を定義したサンプルを紹介しよう。(Gist)
関数の戻り値の種類(型)と変数の型は一致していなければなりません。基本的に、異なる型の変数に異なる戻り値型の関数は使用できません。コンパイラでエラーとなります。
念のために戻り値の型を確認しておきましょう。
戻り値型の例
戻り値の型 | 名称 | 値の例 |
---|---|---|
void | 戻り値なし | -- |
string | 文字列型 | "Hello","こんにちは"... |
int | 整数型 | 1,2,3,4... |
bool | ブール型(真偽値型) | true,false |
次回はクラスの定義についての記事を上げる予定です!
また、型変換についての記事も上げるかもしれません。
この記事に誤りがあるかもしれません。その辺はご了承ください。
本記事で紹介されている方法・手法はあくまでも個人的なものです。
GistID: 07