Что такое эквивалент Visual Basic следующего булевского выражения С#?
data.GetType() == typeof(System.Data.DataView)
Примечание. Переменная data объявляется как IEnumerable.
Ответ 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;
}