、ウ、ホ・レ。シ・ク、、マ、ニ、ハ・ヨ・テ・ッ・゙。シ・ッ、ヒトノイテ、ウ、ホ・レ。シ・ク、エ゙、爨マ、ニ、ハ・ヨ・テ・ッ・゙。シ・ッ 、ウ、ホ・レ。シ・ク、livedoor ・ッ・・テ・ラ、ヒトノイテ、ウ、ホ・レ。シ・ク、エ゙、瀝ivedoor ・ッ・・テ・ラ

*フワシ。 [#h55daf4f]

#contents


*・ヌ・・イ。シ・ネ [#qa683e1d]
*・ヌ・・イ。シ・ネ [#ba7f635e]

-・ヌ・・イ。シ・ネ、ネ、マ・皈ス・テ・ノ、リ、ホサイセネ、シィ、ケニテシ、ハ・ッ・鬣ケ、ヌ、「、。」
-・ヌ・・イ。シ・ネ、ネ、マ・皈ス・テ・ノ、リ、ホサイセネ、シィ、ケニテシ、ハ[[・ッ・鬣ケ]]、ヌ、「、。」
-Delegate・ケ・ニ。シ・ネ・皈・ネ、ヘヘム、キ、ニトオチ、ケ、。」
-・ヌ・・イ。シ・ネ、マ・ッ・鬣ケ、ハ、ホ、ヌ。「ヘヘム、ケ、コン、ヒ、マNew・ュ。シ・。シ・ノ、ヘヘム、キ、ニ・ヌ・・イ。シ・ネ・ェ・ヨ・ク・ァ・ッ・ネ、コタョ、ケ、。」
--、ス、ホコン。「・ヌ・・イ。シ・ネ・ッ・鬣ケ、ホ・ウ・・ケ・ネ・鬣ッ・ソ、ヒ、マ、ス、ホ・ヌ・・イ。シ・ネ、ネエリマ「ノユ、ア、・皈ス・テ・ノ、AddressOf・ュ。シ・。シ・ノ、ノユ、ア、ニサリト熙ケ、。」
-・ヌ・・イ。シ・ネ、マ・ム・鬣癸シ・ソ、ネフ皃テヘ、ャーテラ、ケ、・皈ス・テ・ノ、タ、ア、サイセネ、ヌ、ュ、。」
-Delegate・ケ・ニ。シ・ネ・皈・ネ、マEnum・ケ・ニ。シ・ネ・皈・ネ、ネニアヘヘ、ヒ・皈ス・テ・ノニ篷、ヒオュスメ、ケ、、ウ、ネ、マ、ヌ、ュ、ハ、、。」
-"delegete"、ヒ、マニーサ、ホセケ遑ヨームセ、ケ、。ラ。ヨームヌ、、ケ、。ラ。「フセサ、ホセケ遑ヨツ衙ス。ラ。ヨツ袁ソヘ。ラ、ネ、、、ヲーユフ」、ャ、「、。」

*・ヌ・・イ。シ・ネ、ホケスハク [#i9da597f]

 Delegate Sub <・ヌ・・イ。シ・ネフセ>(<・ム・鬣癸シ・ソ1>, <・ム・鬣癸シ・ソ2>, 。ト)

 Delegate Function <・ヌ・・イ。シ・ネフセ>(<・ム・鬣癸シ・ソ1>, <・ム・鬣癸シ・ソ2>, 。ト) As <・ヌ。シ・ソキソ>

ホ罍ァ

 Delegate Function SampleDelegate(ByVal value As Integer) As Integer



*・ヌ・・イ。シ・ネ・ェ・ヨ・ク・ァ・ッ・ネ、ホタクタョ [#g723e366]

-・ヌ・・イ。シ・ネ、マ・ッ・鬣ケ、ハ、ホ、ヌ。「ヘヘム、ケ、コン、ヒ、マNew・ュ。シ・。シ・ノ、ヌ・ヌ・・イ。シ・ネ・ェ・ヨ・ク・ァ・ッ・ネ、タクタョ、ヌ、ュ、。」
--・ヌ・・イ。シ・ネ・ッ・鬣ケ、ホ・ウ・・ケ・ネ・鬣ッ・ソ、ヒ、マ、ス、ホ・ヌ・・イ。シ・ネ、ネエリマ「ノユ、ア、・皈ス・テ・ノ、AddressOf・ュ。シ・。シ・ノ、ノユ、ア、ニサリト熙ケ、。」

ホ罍ァSampleDelegate、ホ・ヌ・・イ。シ・ネ・ェ・ヨ・ク・ァ・ッ・ネMyDelegate、ヒ・皈ス・テ・ノMethod1、エリマ「ノユ、ア、。」

 Dim MyDelegate As SampleDelegate = New SampleDelegate(AddressOf Method1)

*・ヌ・・イ。シ・ネ、ヌシツクス、ヌ、ュ、オ。ヌス [#ycb65c5a]


-[[・、・ル・・ネ・マ・・ノ・饐]
-[[・ウ。シ・・ミ・テ・ッ・皈ス・テ・ノ]]
-、ソ、タ、キ。「エリマ「ノユ、ア、、ウ、ネ、ャ、ヌ、ュ、・皈ス・テ・ノ、マ。「・ム・鬣癸シ・ソ、ホ・ヌ。シ・ソキソ、ホハツ、モ、ネフ皃テヘ、ホ・ヌ。シ・ソキソ、ャーテラ、ケ、セケ遉ホ、゚、ヌ、「、。」

ホ罍ァ、ウ、、゙、ヌ、ホホ网ヌ、、、ィ、ミ。「・皈ス・テ・ノMethod1、マシ。、ホ・、・・ソ・ユ・ァ。シ・ケ、ヌ、「、ノャヘラ、ャ、「、。」

 Function Method1(ByVal a As Integer) As Integer



**AddHandler、サネ、テ、ソ・ヌ・・イ。シ・ネ、ネ・皈ス・テ・ノ、ホエリマ「ノユ、ア [#oe1dfa3a]

。。AddHander、サネ、テ、ニ・ヌ・・イ。シ・ネ、ネ・皈ス・テ・ノ、エリマ「ノユ、ア、、ウ、ネ、筅ヌ、ュ、。」

ホ罍ァ・オ。シ・ミ。シ・ル。シ・ケ・ソ・、・゙。シ、ヌ、「、System.Timers.Timer、マElapseEventHandler・ヌ・・イ。シ・ネ、サ、ト。」、゙、ソ。「、ウ、ホ・ソ・、・゙。シ、ウォサマ、ケ、、ネ、ュ、マEnabled・ラ・・ム・ニ・」、True。「スェホサ、ケ、、ネ、ュ、マEnabled・ラ・・ム・ニ・」、False、ヒタ゚ト熙ケ、。」

。。0.1ノテ、エ、ネ、ヒイソ、鬢ォ、ホス靉、ケヤ、、、ソ、、セケ遉マシ。、ホ、隍ヲ、ヒ、ケ、。」

#code(vb){{
    Public Sub New()
		。ト

        Dim Timer1 As New System.Timers.Timer()
        AddHandler Timer1.Elapsed, New ElapsedEventHandler(AddressOf Method1)
        Timer1.Interval = 100
        Timer1.Enabled = True
    End Sub

	Private Sub Method1(ByVal sender As Object, ByVal e As ElapsedEventArgs)
		' 0.1ノテ、エ、ネ、ヒシツケヤ、オ、、ス靉.
	End Sub

}}

。。、ウ、、マ・ト。シ・・ワ・テ・ッ・ケ、ホ・ウ・・ン。シ・ヘ・・ネ、ォ、餤imer。ハ、ウ、、マSystem.Windows.Forms.Timer。ヒ、・ユ・ゥ。シ・爨ヒナス、ノユ、ア、ニ。「、ス、ホTimer、ホTick・、・ル・・ネサ、ホス靉、ネ、キ、ニ。「0.1ノテ、エ、ネ、ヒシツケヤ、オ、、ス靉、オュスメ、キ。「Interval・ラ・・ム・ニ・」、ヒ100、タ゚ト熙キ、ニ、ェ、ア、ミ。「サ、ソ、隍ヲ、ハニーコ、マシツクス、ヌ、ュ、((、ウ、ホTimer・ッ・鬣ケ、サネ、テ、ソ、ネ、ュ、マハフ、ホ・ソ・、・゙。シ・皈テ・サ。シ・ク、ャネッタク、キ、ソ、ネ、ュ、ヒクニ、モスミ、オ、、ハ、、。」ホ网ィ、ミ。「・ワ・ソ・、ホ・ッ・・テ・ッス靉、ソノテエヨケヤ、テ、ニ、、、ソセケ遑「、ス、ホエヨ、マTimer1_Tickス靉、マシツケヤ、オ、、ハ、、。」、隍テ、ニ。「クキフゥ、ヒ、マニーコ、ャーロ、ハ、))。」

#code(vb){{
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
		' 0.1ノテ、エ、ネ、ヒシツケヤ、オ、、ス靉.
    End Sub

}}

。。、ハ、ェ。「、ウ、、ヘヘム、キ、ソホ网[[VB.NET/・ニ・ッ・ヒ・テ・ッ/・「・、・ウ・・「・ヒ・癸シ・キ・逾]]、ヌセメイ、キ、ニ、、、。ハSystem.Timers.Timer、ヘヘム。ヒ。」。。。

*エリマ「ノユ、ア、鬢、ソ・皈ス・テ・ノ、ホクニ、モスミ、キ [#ba703605]

-・皈ス・テ・ノ、・ヌ・・イ。シ・ネ、ヒエリマ「ノユ、ア、、ネ。「・ヌ・・イ。シ・ネ、トフ、ク、ニ・皈ス・テ・ノ、クニ、モスミ、サ、。」
-エリマ「ノユ、ア、・皈ス・テ・ノ、ヒ、マ・、・・ケ・ソ・・ケ・皈ス・テ・ノ。「カヲヘュ・皈ス・テ・ノ、ホ、、、コ、、篏ネヘム、ヌ、ュ、。」
--・、・・ケ・ソ・・ケ・皈ス・テ・ノ、エリマ「ノユ、ア、セケ遉マ。「・皈ス・テ・ノ、クニ、モスミ、ケ・、・・ケ・ソ・・ケ、カ靆フ、ケ、。」

ホ罍ァ

 Method1(<・ム・鬣癸シ・ソ>)

、シツケヤ、ケ、ツ螟、熙ヒ。「

 MyDelegate(<・ム・鬣癸シ・ソ>)

、ヌシツケヤ、ヌ、ュ、。」

。。MyDelegate、マ・ェ・ヨ・ク・ァ・ッ・ネ、タ、ャ。「、「、ソ、ォ、筵皈ス・テ・ノ、ホ、隍ヲ、ヒサネ、ィ、。」。。。

ホ罍ァツセ・ッ・鬣ケ、ホ・、・・ケ・ソ・・ケ・皈ス・テ・ノ、ネカヲヘュ・皈ス・テ・ノ、・ヌ・・イ。シ・ネ、ヒエリマ「ノユ、ア、。」

#code(vb){{
Imports System

Class TestClass
    Private text_ As String

    Public Sub New(ByVal text As String)
        text_ = text
    End Sub

    Public Sub Method1()
        Console.writeLine(text_)
    End Sub

    Public Shared Sub Method2()

    End Sub
End Class

Class Sample
    Shared Sub Main()
        Dim instance1 As New TestClass("test")
        Dim action1 As New Action(AddressOf instance1.Method1)
        action1()

        Dim instance2 As New TestClass("test")
        Dim action2 As New Action(AddressOf instance2.Method1)
        action2()

        Dim action3 As New Action(AddressOf TestClass.Method2)
        action3()
    End Sub
End Class

}}




*・ク・ァ・ヘ・・テ・ッ。ヲ・ヌ・・イ。シ・ネ [#e1d8158b]

**Action<T>・ヌ・・イ。シ・ネ [#id5ea239]

。。.NET Framework 2.0、ホ・ッ・鬣ケ・鬣、・ヨ・鬣遙ハSystemフセチーカエヨ。ヒ、ヒ、マ。「シ。、ヒシィ、ケ・ク・ァ・ヘ・・テ・ッ。ヲ・ヌ・・イ。シ・ネ、ホタクタ、ャエ゙、゙、、ニ、、、。」

|ーソ、ハ、キ。ヲフ皃テヘ、ハ、キ|[[Action:http://msdn.microsoft.com/ja-jp/library/system.action.aspx]]|
|ーソ、「、遙ヲフ皃テヘ、「、黥[[Action(T):http://msdn.microsoft.com/ja-jp/library/018hxwa8.aspx]]。「[[Action(T1, T2):http://msdn.microsoft.com/ja-jp/library/bb549311.aspx]]、ハ、ノ|
|ーソ、ハ、キ。ヲフ皃テヘ、「、黥[[Func(TResult):http://msdn.microsoft.com/ja-jp/library/bb534960.aspx]]|
|ーソ、「、遙ヲフ皃テヘ、「、黥[[Func(T, TResult):http://msdn.microsoft.com/ja-jp/library/bb549151.aspx]]。「[[Func(T1, T2, TResult):http://msdn.microsoft.com/ja-jp/library/bb534647.aspx]]、ハ、ノ|

*・ヌ・・イ。シ・ネ、ホウ靉ム [#z87b4533]

**・ウ。シ・・ミ・テ・ッス靉 [#q9a05248]

。。・皈ス・テ・ノ、ホ・ム・鬣癸シ・ソ、ヒ・ヌ・・イ。シ・ネ、ナマ、キ、ニ。「、ス、ホ・皈ス・テ・ノ、ホクニ、モスミ、キタ隍ヌ・ヌ・・イ。シ・ネ、シツケヤ、ケ、、ウ、ネ、ャ、ヌ、ュ、。」

ホ罍ァ

#img(http://security2600.sakura.ne.jp/main2/image4/delegate1.png)
#img(,clear)

#code(vb){{
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim x As Integer = TripleData(Integer.Parse(TextBox1.Text))
        Label1.Text = "キラササキイフ。ァ " & x
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim x As Integer = HalfData(Integer.Parse(TextBox1.Text))
        Label1.Text = "キラササキイフ。ァ " & x
    End Sub

    Private Function TripleData(ByVal n As Integer) As Integer
        Return n * 3
    End Function

    Private Function HalfData(ByVal n As Integer) As Integer
        Return n / 2
    End Function

End Class

}}

。。、ウ、ホ・ラ・・ー・鬣爨ヌ、マ・ニ・ュ・ケ・ネ・ワ・テ・ッ・ケ、ヒニホマ、キ、ソテヘ、シ隍スミ、キ、ニソサ、ヒハムエケ、ケ、ス靉、ネ。「TripleData()、腥alfData()、ヌニタ、ソテヘ、・鬣ル・、ヒタ゚ト熙ケ、イユス熙ャスナハ」、キ、ニ、、、。」、゙、ソ。「・ニ・ュ・ケ・ネ・ワ・テ・ッ・ケ、ォ、鯏ヘ、シ隍スミ、ケス靉、ネ。「・鬣ル・、ヒキラササキイフ、タ゚ト熙ケ、ス靉、マ1ス靉、ホ、゙、ネ、゙、熙ネケヘ、ィ、、ウ、ネ、ャ、ヌ、ュ、。」
。。、ス、ウ、ヌ。「・ヌ・・イ。シ・ネ、サネ、ヲ、ネシ。、ホ、隍ヲ、ヒス、タオ、ヌ、ュ、。」

#code(vb){{
Public Class Form1

    Delegate Function CalcDelegate(ByVal n As Integer) As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MyCalc As CalcDelegate = New CalcDelegate(AddressOf TripleData)
        Process(MyCalc)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim MyCalc As CalcDelegate = New CalcDelegate(AddressOf HalfData)
        Process(MyCalc)
    End Sub

    Private Sub Process(ByVal callBack As CalcDelegate)
        Dim n As Integer = Integer.Parse(TextBox1.Text)
        Dim x As Integer = callBack(n)
        Label1.Text = "キラササキイフ。ァ " & x
    End Sub

    Private Function TripleData(ByVal n As Integer) As Integer
        Return n * 3
    End Function

    Private Function HalfData(ByVal n As Integer) As Integer
        Return n / 2
    End Function

End Class

}}

。。、ウ、ヲ、ケ、、ウ、ネ、ヌ。「Process()、ホクニ、モスミ、キクオ、マ・ニ・ュ・ケ・ネ・ワ・テ・ッ・ケ、ォ、鬢ホテヘ、ホシ霹タ、茹鬣ル・、ヒキラササキイフ、タ゚ト熙ケ、、ネ、、、テ、ソス靉、ーユシア、ケ、、ウ、ネ、マ、ハ、、。」Process()、ホクニ、モスミ、キクオ、ヌ、「、・ワ・ソ・、ホイ。イシ・、・ル・・ネ、マ。「シォソネ、ャイソ、ホフワナェ、ホ・ワ・ソ・、ヌ、「、、ォ、マヌトーョ、キ、ニ、、、、ソ、癸「キラササ、ヒサネヘム、ケ、・皈ス・テ・ノ、タ、ア、テホ、、タ、ア、ヌススハャ、ヌ、「、。」

**ハフ・ケ・・テ・ノ、ォ、鬣ウ・・ネ・。シ・、チ犲、ケ、 [#ida03138]

-ーソフオ、キ、ホセケ
--http://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html
-ーソ、「、熙ホセケ
--http://dobon.net/vb/melma/dotnet25.txt

ホ罍ァ

#code(vb){{
#Region "・ニ・ュ・ケ・ネ・ワ・テ・ッ・ケ、ヒハクサホニホマタゥク"
    Private Delegate Function InputDelegate(ByVal text As String) As Boolean

    Private Function InputTextBox(ByVal text As String) As Boolean
        TextBox1.Text = TextBox1.Text + text + vbCrLf
    End Function

    Private Sub invokeTextBox(ByVal dlg As InputDelegate, ByVal text As String)
        TextBox1.Invoke(dlg, New Object() {text})
    End Sub
#End Region

}}

。。ハフ・ケ・・テ・ノ、ォ、鮟ネヘム、ケ、、ネ、ュ、マシ。、シツケヤ、ケ、。」

 Dim dlg As New InputDelegate(AddressOf InputTextBox)
 invokeTextBox(dlg, "ハクサホ")

*・ヌ・・イ。シ・ネ、ネ・ウ。シ・ヌ・」・・ーオャフ [#yb9287ed]

-・ヌ・・イ。シ・ネフセ、マPascalキチシー、ヒ、ケ、。」
-・、・ル・・ネフセ、マPascalキチシー、ヒ、ケ、。」
-・、・ル・・ネ、ヌサネヘムs、、ヲ、ソ、皃ホ・ヌ・・イ。シ・ネ、ヒ、マ"EventHandler"・オ・ユ・」・ッ・ケ、ノユ、ア、。」
--、ウ、、ヒ、隍・、・ル・・ネ・マ・・ノ・鬢ャナミマソ、オ、、、ウ、ネ、ャフタウホ、ヒ、ハ、遙「イトニノタュ、ャクセ蚶、、ヲ。」
---ホ罍ァPublic Delegate Sub MouseOverEventHandler(ByVal sender As Object, ByVal e As MouseEventArgs)
-・、・ル・・ネ、ヌサネヘム、ケ、、ソ、皃ホ・ヌ・・イ。シ・ネ、マSub、ヌタクタ、ケ、。」
--フ皃テヘ、ャ、「、・ヌ・・イ。シ・ネ、・、・ル・・ネ、ヌサネヘム、ケ、、ウ、ネ、マ、ヌ、ュ、ハ、、。」

*サイケヘハクク・ [#i0c3607e]

-。リVisual Basic 2008ニフ遑ル
-。リVB.NET・。シ・・ヨ・テ・ッ。ル