Req12: Select Case on object identity and type
[This post is part of a series, "wish-list for future versions of VB"]
VB already has a powerful "Select Cast" statement, e.g.
Select Case x
Case Is = 1
Console.WriteLine("x is equal to 1")
Case Is > 7
Console.WriteLine("x is greater than 7")
Case 2 To 4
Console.WriteLine("x is between 2 and 4")
End Select
IDEA: Allow Select Case on object identity. For example,
Select Case sender
Case Is TextBox1
Console.WriteLine("sender was TextBox1")
Case Is TextBox2
Console.WriteLine("sender was TextBox2")
End Select
IDEA: Allow Select Case on type. For example,
Select Case TypeOf(sender)
Case Is TextBox
' Type of "sender" is TextBox inside this block:
sender.ReadOnly = True
Case Is Label
' Type of "sender" is Label inside this block:
sender.AutoEllipsis = True
End Select
This would provide an alternative to the common object-oriented style of writing a "visitor" pattern by overriding the "Visit" method on each subtype. Instead, in the manner of F# and other functional languages, you could gather the visiting code together in one place. Note that you wouldn't be allowed to GOTO from one branch to another (except maybe from a subtype to a supertype!)
Provisional evaluation from VB team: This is a decent idea, worth considering against the other decent ideas. (If you have other scenarios, please write in with them!)