Подтвердить что ты не робот

Visual Basic эквивалент проверки типа С#

Что такое эквивалент Visual Basic следующего булевского выражения С#?

data.GetType() == typeof(System.Data.DataView)

Примечание. Переменная data объявляется как IEnumerable.

4b9b3361

Ответ 1

Как я помню

TypeOf data Is System.Data.DataView

Edit:
Как отметил Джеймс Карран, это работает, если данные также являются подтипом System.Data.DataView.

Если вы хотите ограничить это только в System.Data.DataView, это должно работать:

data.GetType() Is GetType(System.Data.DataView)

Ответ 2

Просто подумал, что я опубликую резюме в интересах программистов на С#:

С# val is SomeType

    В VB.NET: TypeOf val Is SomeType

    В отличие от Is, это можно отменить только как Not TypeOf val Is SomeType

С# typeof(SomeType)

    В VB.NET: GetType(SomeType)

С# val.GetType() == typeof(SomeType)

    В VB.NET: val.GetType() = GetType(SomeType)

    (хотя Is также работает, см. следующий)

С# val.ReferenceEquals(something)

    В VB.NET: val Is something

    Можно легко скрыть: val IsNot something


С# val as SomeType

    В VB.NET: TryCast(val, SomeType)

С# (SomeType) val

    В VB.NET: DirectCast(val, SomeType)

    (кроме случаев, когда задействованы типы, выполняющие оператор трансляции)

Ответ 3

Вы также можете использовать TryCast, а затем ничего не проверять, таким образом, вы можете использовать литой тип позже. Если вам не нужно это делать, не делайте этого так, потому что другие более эффективны.

См. этот пример:

VB:

    Dim pnl As Panel = TryCast(c, Panel)
    If (pnl IsNot Nothing) Then
        pnl.Visible = False
    End If

С#

Panel pnl = c as Panel;
if (pnl != null) {
    pnl.Visible = false;
}

Ответ 4

Попробуйте это.

GetType(Foo)