とりこらぼ。

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

目次

Blog 利用状況

ニュース

プロフィール

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

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

Visual Studio 2008 の Visual Basic における Visual Studio 2005 からの変更点。その3。

セッションネタです。

前回→Visual Studio 2008 の Visual Basic における Visual Studio 2005 からの変更点。その2。


今回は3つ目の変更点を。

3.T から T? への拡張が定義済みの変換として扱われる。

さて、Visual Studio 2008 では、T から T? への拡張を既定でサポートするようになりました。この動作によって、今までのコードがあいまいとみなされることがあります。例えば以下のようなクラスがあったとして~

Namespace Demo3
    Public Class Class1
        Public Overloads Sub Method(ByVal arg As Integer)
            System.Console.WriteLine("さくさく~")
        End Sub
        Public Overloads Sub Method(ByVal arg As Nullable(Of Short))
            System.Console.WriteLine("MewMew~")
        End Sub
    End Class
End Namespace

オーバーロードされた Method という名前のメソッドがあり、パラメータにはそれぞれ Integer と、 Nullable(Of Short) をとります。

このクラスを以下のようにパラメータにShort型を指定して呼び出す場合、あいまいさを指摘するコンパイル エラーが生成されるです。

Namespace Demo3
    Module Program
        Sub Main()
            Dim c1 As New Class1             Dim s As Short
            c1.Method(s)
        End Sub
    End Module
End Namespace

つまり、オーバーロードの解決時に T? へのバインドが考慮されるようになったのですね♪で、上記コードはどっちの Method にバインドしていいかわからないからエラー出しちゃいますよって感じです。

投稿日時 : 2008年5月17日 14:03

Feedback

No comments posted yet.
タイトル
名前
Url
コメント