Выберите Случай на типе объекта в VB.NET

Я задавался вопросом то же самое и здесь являюсь списком, который я нашел на LuaForge.

не судили ни одного из них так, Ваш пробег может варьироваться.

40
задан Peter Mortensen 23 November 2012 в 16:56
поделиться

4 ответа

В VB 2010 для проектов, ориентированных на .NET framework 4 и более поздних версий, теперь вы можете сделать следующее:

Select Case msg.GetType()
    Case GetType(ClassA)
End Select

В более ранних версиях VB это не работало, потому что вы не могли сравнить два типы с равенством. Вам нужно будет проверить, указывают ли они на одну и ту же ссылку, используя ключевое слово Is. Это невозможно сделать в Select Case, если вы не используете свойство типа, например Name или FullName, для сравнения, как было предложено Майклом. Вы можете использовать комбинацию If и ElseIf:

Dim type = msg.GetType()
If type Is GetType(ClassA)
    ...
ElseIf type Is GetType(ClassB)
    ...
...
End If
72
ответ дан 27 November 2019 в 01:17
поделиться

Что ж, если вы настаиваете на использовании Select Case, вы всегда можете использовать:

Select Case True
    Case TypeOf msg Is ClassA
        ' do something '
    Case TypeOf msg Is ClassB
        ' do something else '
    Case Else
        ' and so on '
End Select

Но я полагаю, что большинству людей нравится избегать подобных вещей. If / ElseIf, вероятно, будет понятнее.

20
ответ дан 27 November 2019 в 01:17
поделиться

Это:

Dim a As Object = New TextBox

Select Case True
    Case TypeOf a Is TextBox
        MsgBox("aaa")

    Case TypeOf a Is ComboBox

    Case TypeOf a Is ListBox

End Select
1
ответ дан 27 November 2019 в 01:17
поделиться

Это способ обработки событий нажатия кнопок Button1 и Button2 в одном и том же подпрограмме (я начинал как программист VB6, так что это хорошая замена для VB6 обработка управляющих массивов)

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
                Select Case True
                    Case sender Is Me.Button1
                        ' Do Button1 stuff '
                    Case sender Is Me.Button2
                        ' Do Button2 stuff '
                End Select
            End Sub
7
ответ дан 27 November 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: