ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

ジェネリックの基礎について

f:id:covory10101101276:20171228124905j:image

みなさんこんにちは🌚

冬休みも課題や集中講義に追われているブルーノです。課題の合間にはこのブログで息抜きがてら勉強します。まあゲームもやってるんだけどね。

冬休みにまとめきれなかったー😭

さて今回からはジェネリックというものについて勉強していきます

 

ジェネリック

名前を見ると私は黒柳徹子しか浮かびませんがこのジェネリックという概念はC#ではかなり強い(有用である)そうです。ジェネリック(generic)とは英語で「ブランドにとらわれない」とか、「一般的な」という意味で、ジェネリック医薬品は万人に効果があると証明されたものの名前だそうです。

C#でも同じで、型にとらわれないというのがこのジェネリッククラスの特徴です。

ジェネリッククラスはそのインスタンス生成時にそのメンバの型を決定します。書き方としては以下のようになります。

class MyClass<T>

{

  public T x;

  public int show(T p) {...}

}

クラス名の横やメンバの型がTというものに置き換わっていますね。このTは自分で指定したもので別のアルファベットや単語でも構わないです(一般的には大文字1文字で表されるようです)。このTを型パラメータといい以下のようにインスタンス生成して使います

MyClass<int> mc = new MyClass<int>()

この場合は上のTがint型になります。簡単にコードを書いてみます。

f:id:covory10101101276:20180110094907p:imagef:id:covory10101101276:20180110094908p:imagef:id:covory10101101276:20180110094911p:image

Bruno102クラスのメインメソッドで二つのBruno101クラスのインスタンスを生成しています。しかしその中身はそれぞれint型とstring型の別の型を代入できていますね。これこそがジェネリックの強みで、同じ設計図で型違いの物を全てひとまとめにできるのです。

型パラメータは複数取ることもできます。

f:id:covory10101101276:20180117105327p:imagef:id:covory10101101276:20180117105348p:imagef:id:covory10101101276:20180117105352p:imagef:id:covory10101101276:20180117105353p:imagef:id:covory10101101276:20180117105438p:image

少し長くなってしまいましたが二つの配列にそれぞれ番号と名前を保存し、それを表示するプログラムを組んでみました。このようにジェネリックは予め決めておいた設計図にあらゆる型を当てて柔軟に対応させることができるんですね。今回はここまでにしておきます。

 

テストに課題にとても忙しくて全然更新できてません〜〜

でも今月中にはC#の内容を一通り終えたいので頑張ります!

海鮮キムチ鍋家で作ったけどうまかった😍