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

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

デリゲート

f:id:covory10101101276:20171113164700j:image

みなさんこんにちは🌚

貧乏生活で身も心も細っていくブルーノです。バイトやめたら一気にお金なくなりました(T . T)習慣付いた浪費グセってこわい😭

さて今回からはデリゲートについてまとめて行きたいと思います

 

デリゲートについて

デリゲート(delegate)は英語で委任するという意味です。プログラミングにおいてはデータ型とパラメータリストを指定したデリゲートを宣言することでメソッドを代行してもらうことができます。どういうことか、何に使えるのかちょっと見てみます

 f:id:covory10101101276:20171113165828p:imagef:id:covory10101101276:20171113165830p:image

デリゲートはクラス外で宣言しておいて16行目のようにインスタンス化する際にメソッドの名前を入力することでデリゲート名でそのメソッドを呼び出すことができるようになるんですね。結果はShowメソッドが2回呼び出されていますね。これはたまたま呼び出されるメソッドと呼び出すクラスが同じでした。今度は別のクラスで呼び出してみましょう。

f:id:covory10101101276:20171201112724p:imagef:id:covory10101101276:20171201112725p:image

注目するのは20行目で、デリゲートにクラスとその中のメソッドへの参照を入れています。

 

マルチキャストデリゲーションについて

まずはこちらのコードを見てください。

f:id:covory10101101276:20171201115037p:imagef:id:covory10101101276:20171201115039p:image

24行目でBruno069クラス内の高らかな笑い声のメソッドをデリゲートに当てて次の行で呼び出しています。そして27行目で今度はアヒルの鳴き声のメソッドを同じインスタンスに入れて呼び出しています。これを見ると一つのデリゲートに委託できるメソッドは一つだけなのでしょうか。いえいえ、実は呼び出すメソッドを追加することができるのです。この24行目の後に

m += new MyDelegate(b.show2);

とすることで、このデリゲートを呼び出した際ネズミとアヒルの両方の鳴き声を聞くことができるのです。逆にこの後に

m -= new MyDelegate(b.show1);

とすればアヒルの鳴き声だけになります。このように呼び出すメソッドをいくつも増やしたりすることをマルチキャストデリゲーションと言います。声に出して言いたいですね!

 

デリゲートの基本を説明したところで今回は終わります。

冬の大会でこの二週間忙しかったあ〜〜🤯🤯🤯

久しぶりにこの記事書くと楽しいです😊

もう12月ですね。このブログも半年続いたお知らせが来ましたがのんびりペースすぎますね...

もっと頑張ろうっと