無意識なTypoで以下の記述をしてました。
Dim cls as new xxx
Dim txt as string = cls!abc
Strict onなのにSyntax Errorにならない。それどころか実行できる。!!!
?なんで? VBには「 感嘆符 (!) 演算子」なるものが存在していました。
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_vbalr/html/310dce0c-45b5-4e0d-83e9-32df258d2a3e.htm
ディクショナリ アクセス演算子として使用するんだそうです。Default Method に対して有効。
私が知らなかっただけかも。文法/構文の中にはまだまだ知らない記述法があるのでしょうね。必要なければ知らないでも済むのですが、気にはなります。
好きではない記述法なので推奨はしません。が面白い発見だったので書いてみました。
使用例
Public Class Form6
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hD As hasDefault = New hasDefault()
MessageBox.Show(hD!X)
End Sub
End Class
Public Class hasDefault
Default Public ReadOnly Property index(ByVal s As String) As String
Get
Return (32768 + AscW(s)).ToString
End Get
End Property
End Class