猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

VisualStudio Windows

c# デリゲート(delegate)とは

投稿日:2013年9月21日 更新日:

デリゲートの説明としてよく
処理の委譲とか関数ポインタとかでてきますが、
cはさわりしか知らないので、なかなか理解できませんでした。

結局のところ
デリゲートを使用すると
関数を引数に利用できる!
という点に尽きるのではないでしょうか。

下記はデリゲートの使用例です。
ただし、このサンプルではデリゲートを利用する意味はありませんのでご注意ください・・・

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test
{

    public partial class Form1 : Form
    {
        private delegate String DelegateFunc(String msg);

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DelegateFunc df = new DelegateFunc(DelegateMethod);
            Console.WriteLine(df("hello"));
            Console.WriteLine(TestMethod(df));
        }


        private String DelegateMethod(String msg)
        {
            return DateTime.Now.ToString("HH:mm:ss") + " " + msg;
        }

        private String TestMethod(DelegateFunc df)
        {
            return df("good day");
        }

    }
}

Gooleアドセンス用336

Gooleアドセンス用336

-VisualStudio, Windows
-,

執筆者:

関連記事

WindowsのeclipseからLinuxのPHPをリモートデバッグする(1)Linuxにxdebuをインストールする

Windowsを使用するのはグラフィカルで便利な開発環境があるためです。 そしてサーバーとしてのLinuxは秀逸です。 PHPもフリーで簡易ですし、Apache・MySQL・Linuxとの相性も最高で …

windows

VisualStuido codeとBitbacket連携

INDEX1 Bitbacketでリポジトリを作成する2 vscodeのターミナルでリポジトリの設定を追加します3 リモートにプッシュする4 エラーになり5 Git Credential Manage …

route deleteで削除できないルート

route deleteで削除できないルートがあります。 それは、 ネットワーク接続 > プロパティ > インターネット プロトコル XXX   > プロパティ > 詳細設定 によって設定されているI …

c# Task(スレッド)を生成する際に引数に変数を使うときは注意

for(int i ; i TestTask(object[i])); } 上記のように、引数に変数(この場合はi)を使用する場合には注意が必要です。 タスク(スレッド)の実行時にこのiは評価されるか …

windows

Windows8.1の無線LANアダプター(WN-G300UA)でwifiのアクセスポイント(MZK-SA300D)が見えなくなった時の対応

手軽なwifiのアクセスポイント(MZK-SA300D)を使用していました。 しかし突然、頻繁に通信ができなくなりました。 繋がっては切れるの繰り返しです。 それがかなり続き、PC側の問題かもしれない …