投稿者 あにす  (社会人) 投稿日時 2009/2/4 23:10:13
日本語だと上手く説明出来ないのでまずはコードを見て下さい。
VB.NETでイベントを発生させるだけの意味の無いコードです。
Module Module1

    Sub Main()
        Dim hoge As New Hoge

        AddHandler hoge.Event_, New EventHandler(AddressOf A)
        AddHandler hoge.Event_, New EventHandler(AddressOf B)
        AddHandler hoge.Event_, New EventHandler(AddressOf C)

        hoge.RaiseEvent_()

        Console.ReadLine()
    End Sub

    Sub A()
        Console.WriteLine("A")
    End Sub

    Sub B()
        Console.WriteLine("B")
    End Sub

    Sub C()
        Console.WriteLine("C")
    End Sub
End Module

Delegate Sub EventHandler()

Class Hoge
    Public Event Event_ As EventHandler

    Public Sub RaiseEvent_()
        RaiseEvent Event_()
    End Sub
End Class


僕の環境では何度実行しても結果は

A
B
C

という出力になるのですが、これはVBの仕様で保障されているのでしょうか?それとも処理系の実装依存でたまたまなのでしょうか?
特にこのことで困っているわけでもないのですが、どうにも気になってしまってスッキリしないのです。
知っている方がいましたら是非情報を下さい。

P.S. VB2005でビルドしたバイナリをVMware上に構築したubuntuでmono上で実行しても結果は変わりませんでした。