オーバーロードという響き
どうも!こんばんは!
クローバーフィールドの伊関です。
明日からゴールデンウィークですね!
まぁ多くは十連休という方が多いのではないでしょうか?
わがクローバーフィールドも超絶ホワイトな会社なので、
十連休のうま味を堪能させていただきたいんですが、
わたくし明日はITパスポートの試験なのでございます。
浮かれたいのに肝が冷え冷えです。
そして本日クローバーフィールドの親睦会なのに全く飲めないという・・。
ごはんいっぱい食べるしかないですね。
さてITパスポートの前に日々の勉強でございます。
今日も今日とてC#の基礎知識のお話なのですが、
今日は「outキーワード」と「メソッドのオーバーロード」についてです。
outキーワードとは
return文を使って戻り値を返却する場合は、返却できる数値は1つのみです。しかし、参照渡しを使って呼び出し元のデータを書き換えることによって、複数の値を戻すことができます。このように値を返却することを目的とした参照渡しでは、”refキーワード”ではなく”outキーワード”を使います。
outキーワードを使うと・・
・呼び出しもとで実引数を初期化する必要がない。(refを使って渡す場合には初期化する必要がある)
・メソッド側で必ず値を代入しなければならず、代入しないとコンパイルエラーになる。
となり、値の返却に特化した参照渡しになります。
メソッドのオーバーロードとは
例えばint型の二つの値を加算するメソッドの名前を別々につけなければならず、大変不便です。C#では引数の型や個数が異なるメソッドに同じ名前を付けることができます。これは「メソッドのオーバーロード」と呼ばれる機能ですが、このオーバーロードによって同じような処理をするメソッドは同じ名前を付けることができ、呼びわけはコンパイラが自動で行ってくれるので大変便利です。
オーバーロードが使えるのは
・引数の型が異なる場合
・引数の個数が異なる場合
オーバーロードが使えないのは
・引数の型と個数が同じで戻り値の型だけ異なる場合
・引数の型は同じで、引数名だけ変えた場合
・refとoutだけが異なる場合。
使用例
//呼び出し元
int x = sum(10,20);
int y = sum(10,20,30);
double =sum(123.45,678.9);
//メソッド1
private int sum(int a,int b)
{
return a+b;
}
//メソッド2
private int sum(int a,int b,int c)
{
return a+b+c;
}
//メソッド3
private int sum(double a,double b)
{
return a+b;
}
「sum(10,20)」は2個の引数がint型なのでメソッド1が呼ばれ、結果は「30」になります。「sum(10,20,30)」はint型の引数が3個あるのでメソッド2が呼ばれ、結果は「60」になります。「sum(123.45,678.9)」は2つの引数がdouble型なのでメソッド3が呼ばれ、結果は[802.35」になります。
以上です。
ゴールデンウィーク中も復習の記事を書いていきたいと思いますので、
もしお暇な時間あれば見て頂ければ幸いです。
では。