とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ -

Visual Basic でなんとなくイベントとデリゲート その5。 - Address Of 'AddressOf' -


今回は「とりこびとの半分はやさしさで出来ています・・・が、もう半分は!!?」を予定していましたが、変更してお送りします。


前回はコメント欄でシャノンさんにAddressOfの歴史を知ることができるエントリに仕上げていただきました。ありがとうございます。


今回はデリゲートでいろいろ遊んでみます。まずは・・・あ!前回までは共有メソッド(Shared)をデリゲートに突っ込んでいましたが、インスタンス メソッドはどうなのかな?

ってことで、まずはこんなクラスを用意。

Option Compare Binary
Option Explicit On
Option Strict On

Imports System

Public Class Messenger

    ' メッセージのフレーズ
    Private phrase As String = String.Empty

    ' メッセージのフレーズを設定するメソッド。
    Public Sub SetPhrase(ByVal phrase As String)

        Me.phrase = phrase

    End Sub

    ' メッセージを標準出力に表示する。
    Public Sub ShowMessage(ByVal targetName As String)

        Console.WriteLine(phrase, targetName)

    End Sub

End Class

このクラスを普通に使うとこんな感じ↓です。メッセージのフレーズを設定して、メッセージを標準出力に表示するって感じですね。

Option Compare Binary
Option Explicit On
Option Strict On

Imports System

Public Class Program

    Public Shared Sub Main()

        Dim bufferinMessenger As New Messenger

        bufferinMessenger.SetPhrase("{0} の半分はやさしさで出来ています。")

        bufferinMessenger.ShowMessage("とりこびっち")

    End Sub

End Class

で、前回までに使用していた ShowMessageDelegate を用意して・・・デリゲート経由な感じで書くと、

Option Compare Binary
Option Explicit On
Option Strict On

Imports System


Public Delegate Sub ShowMessageDelegate(ByVal targetName As String)


Public Class Program

    Public Shared Sub Main()

        Dim bufferinMessenger As New Messenger

        bufferinMessenger.SetPhrase("{0} の半分はやさしさで出来ています。")


        Dim showBufferinMessage As ShowMessageDelegate

        showBufferinMessage = AddressOf bufferinMessenger.ShowMessage

        showBufferinMessage.Invoke("とりこびっち")

    End Sub

End Class

こんな感じになります。実行したときの出力は、

とりこびっち の半分はやさしさで出来ています。

ですね。んで、これだけだとアレなので、bufferinMessengerに加えて、もう一つMessengerを増やしてみる。

Option Compare Binary
Option Explicit On
Option Strict On

Imports System


Public Delegate Sub ShowMessageDelegate(ByVal targetName As String)


Public Class Program

    Public Shared Sub Main()


        Dim bufferinMessenger As New Messenger

        bufferinMessenger.SetPhrase("{0} の半分はやさしさで出来ています。")

        Dim showBufferinMessage As ShowMessageDelegate

        showBufferinMessage = AddressOf bufferinMessenger.ShowMessage

        showBufferinMessage.Invoke("とりこびっち")
 

       Dim jojoMessenger As New Messenger

        jojoMessenger.SetPhrase("さすが{0}! おれたちにできない事を平然とやってのけるッ そこにシビれる! あこがれるゥ!")

        Dim showJoJoMessage As ShowMessageDelegate

        showJoJoMessage = AddressOf jojoMessenger.ShowMessage

        showJoJoMessage.Invoke("ぽぴ王子さん")


    End Sub

End Class

実行したときの出力は、

とりこびっち の半分はやさしさで出来ています。
さすがぽぴ王子さん! おれたちにできない事を平然とやってのけるッ そこにシビれる! あこがれるゥ!

となります。要するにデリゲートにはどのインスタンスのメソッドへの参照かってのが渡されているってことでしょうか。うむ、また一つ勉強になった。


デリゲートって面白!


って、なってきました。2ヶ月くらい悩む覚悟でやってますから、気が楽ですよ、私は♪

次回ももう少しデリゲートにさわさわさわさわです。

投稿日時 : 2007年10月26日 11:40

Feedback

# re: Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ - 2007/10/26 12:35 ぽぴ王子

奇遇ですね。僕も半分はやさしさで出来ているんですよ。
もう半分ですか?やらしさで出来ています。

誰がうまいこと言(ry

# re: Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ - 2007/10/26 15:50 はつね

とりさん、とりさん。
本編とは関係ないんだけれど、brタグが各行にはいってるけれど取った方が見やすいと思うんだけれどどう思います?
特にソースコードとかだと見やすいフォーマットで一度に見える量が多い方が分かりやすいかなーとかと思うのであります。

>>王子
やさーしさと やらしーさと 王冠と♪

# re: Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ - 2007/10/26 16:33 とりこびと

コメントありがとうございます。

>>ぽぴ王子さん

>奇遇ですね。僕も半分はやさしさで出来ているんですよ。

おそろいですね♪

>もう半分ですか?やらしさで出来ています。

奇遇ですね。私も半分はやらしさで出来ているんですよ。

誰がうまいこと言(ry


>>はつねさん

>本編とは関係ないんだけれど、brタグが各行にはいってるけれど取った方が見やすい

う・・・そうなんですね。
<br>入れてるところは敢えていれ手単ですけど・・・。
文章もぎっちりつめといていいのかなぁ・・・。

# ソースコードの行間は普段の私のコーディングのままですし・・・。

# re: Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ - 2007/10/26 17:45 とりこびと

これでおk?

普段IEで見てたんですけどFireFoxのが正しい表示ですかね。

# re: Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ - 2007/10/26 19:18 はつね

ありがとん。みやすくなったー。

> 文章もぎっちりつめといていいのかなぁ・・・。

文章は人それぞれ文体があるからなんとも言えないけど。
同じ人でも書いている内容にもよるでしょうしね。


> # ソースコードの行間は普段の私のコーディングのままですし・・・。

実際のコーディングだと、変数宣言とコード部の間とか以外は1行空けとかせずに書いてたりしますね。

# re: Visual Basic でなんとなくイベントとデリゲート その6。 - デリゲートでちょっとだけ遊ぶ - 2007/10/26 20:13 とりこびと

はつねさん、コメントありがとうございます。

>ありがとん。みやすくなったー。

FireFoxをご使用でしたか?
どうもIEとFireFoxでの表示が異なっていたみたいです。

で、今見られているのが普段の私のコーディングのはずです(念のため)

>実際のコーディングだと、変数宣言とコード部の間とか以外は1行空けとかせずに書いてたりしますね。

私自身、行が連続するとすごく読みにくいんです。
なので、行間を空けることが多いのですが、ある程度まとまった意味を持つ処理単位にとどめようと思います。

# Visual Basic でなんとなくイベントとデリゲート その7。 - デリゲートでもうちょっとだけ遊ぶ - 2007/10/29 13:13 とりこびと ぶろぐ。

Visual Basic でなんとなくイベントとデリゲート その7。 - デリゲートでもうちょっとだけ遊ぶ -

# iJgPnSPOHsuOw 2011/11/28 20:25 http://www.spytown.com/

Read, of course, far from my topic. But still, we can work together. How do you feel about trust management?!...

# JZTXDMvWppMjGzfQtFd 2011/12/12 19:11 http://www.d4women.net/alesse.php

The Author is crazy..!

# TuTwCWzawosdaQ 2011/12/16 0:49 http://www.pemamericaoutlet.com/

Internet is written with the capital letter in a sentence, by the way. And hundredths are written not with a point but with a comma. This is according to the standard. And actually everything is very good..!

タイトル
名前
Url
コメント