1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VB.netで型をSelect Caseする方法

Last updated at Posted at 2021-12-01

はじめに

VB.netのジェネリック プロシージャなどで型で処理を分けたい場合がある
以下のようにしてすっきりと書きたいが上手くいかない。

これは使えない
Public Sub CheckType(Of T)(ByVal value As T)
    Select Case TypeOf value
        Case Integer
            Console.WriteLine("Type is Integer")
        Case String
            Console.WriteLine("Type is String")
        Case Else
            Console.WriteLine("Type is Other")
    End Select
End Sub

Select Case True

ネットで調べると以下の方法をよく見つかるが、こんな書き方をするぐらいならIf-ElseIfでいいじゃないかと思う。(Select Caseで書くのメリットがない。。。)

Public Sub CheckType(Of T)(ByVal value As T)
    Select Case True
        Case TypeOf value Is Integer
            Console.WriteLine("Type is Integer")
        Case TypeOf value Is String
            Console.WriteLine("Type is String")
        Case Else
            Console.WriteLine("Type is Other")
    End Select
End Sub

GetTypeを使う

GetTypeを使うことである程度すっきりと書ける

Public Sub CheckType(Of T)(ByVal value As T)
    Select Case value.GetType()
        Case GetType(Integer)
            Console.WriteLine("Type is Integer")
        Case GetType(String)
            Console.WriteLine("Type is String")
        Case Else
            Console.WriteLine("Type is Other")
    End Select
End Sub

もしくは

Public Sub CheckType(Of T)(ByVal value As T)
    Select Case GetType(T)
        Case GetType(Integer)
            Console.WriteLine("Type is Integer")
        Case GetType(String)
            Console.WriteLine("Type is String")
        Case Else
            Console.WriteLine("Type is Other")
    End Select
End Sub
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?