Tech

C# マルチキャストデリゲートの備忘録

投稿日:2019年7月22日 更新日:

はじめに

こんにちはsuzukiです。本日はC#のマルチキャストデリゲートについてふれていこうと思います。
unityでC#のコードを触っていた際に出会ったのですが、何をしているのかわからなかったため、こちらに備忘として書いておきます。使い方は選ぶかもしれませんがきちんと設計できれば便利なのかもしれません。

C#のデリゲートについて

C#のデリゲートについて、基本的な考え方はSwiftと同じです。処理の移譲を行うという理解で問題なさそうです。
よくわからないというかたはメソッドを変数として同じように扱う仕組みとでも理解していただければと思います。

デリゲートの定義

それではデリゲートの定義の仕方です。
修飾子 delegate 戻り値の型 デリゲート名 引数

デリゲートの定義と同じ戻り値と引数であればデリゲートにメソッドを代入することができます。
今回の場合だと引数にintを一つ戻り値は何も返さない。という条件に合致する必要があります。
代入とデリゲートからメソッドを呼び出すには下記のように記述します。

引数と戻り値が同じであればクラスメソッドもインスタンスメソッドも代入可能です。

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

さて本題のマルチキャストデリゲートについてです。先ほどメソッドの代入は一回だけ行っておりましたが、デリゲートにメソッドの代入を複数行うことができます。メソッドが複数代入されているデリゲートをマルチキャストデリゲートと呼びます。

追加方法

デリゲートに複数のメソッドを代入する場合は+=を使って代入を行います。
またデリゲートの呼び出しは代入された順に行われ、並列実行は行われません。
先ほどのコードをもとに複数のメソッドを代入しました。

実行結果

削除方法

デリゲートに複数のメソッドを代入する場合は-=を使って削除を行います。
その際に代入しているメソッドを指定する必要があります。
二つ同じメソッドが代入されている場合は後ろから削除されていきます。

実行結果

さいごに

一応補足としてマルチキャストデリゲートの戻り値は最後に設定されたメソッドの戻り値が受け取れるみたいです。
なので基本的には戻り値を使うようなデリゲートでマルチキャストデリゲートを使うことはなさそうです。
慣れれば便利に使えるかもしれないので、引き続き学習して行きます。

おすすめ書籍

Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 作って学べる Unity 超入門 スラスラ読める Unity C#ふりがなプログラミング

blog-page_footer_336




blog-page_footer_336




-Tech
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Flutterで生体認証が楽々導入できると噂のlocal_auth

1 はじめに2 準備3 実装3.1 端末が生体認証可能かの確認3.2 生体認証の登録状態の確認3.3 生体認証の実行4 おすすめ書籍 はじめに 最近はFlutterの勉強ばかりしていますが、今回は簡単 ...

[Flutter]カメラのフレームデータを使ってリアルタイム顔認識

1 はじめに2 準備3 実装3.1 カメラプレビューの作成3.2 プレビューからフレームデータ取得3.3 フレームデータから顔認識3.4 顔認識した箇所に枠線の表示3.5 ランドマークと輪郭の検出4 ...

【Unity】URP対応のAssetのPrefabがピンク色になる件

1 はじめに2 レンダリングパイプラインとは2.1 ビルトインレンダリングパイプライン2.2 ユニバーサルレンダリングパイプライン3 URPの設定手順3.1 URPのインストール3.2 URPのアセッ ...

react-icon

【React初心者】改めて主要なhookの使い方

1 はじめに2 useState3 useEffect3.1 useLayoutEffect4 useCallback5 useContext6 さいごに7 おすすめ書籍 はじめに 今回はReactで ...

ReactNativeでアニメーションの実装

1 はじめに2 準備3 実装3.1 イベントを通しての実行3.2 アニメーションについて4 lottie-react-native4.1 Lottieとは5 準備6 実装7 さいごに8 おすすめ書籍 ...

フォロー

blog-page_side_responsive

2019年7月
 123456
78910111213
14151617181920
21222324252627
28293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。