Visual Basic odpowiednik C# type check

Jaki jest odpowiednik Visual Basic następującego wyrażenia boolean C#?

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

Uwaga: zmienna {[1] } jest zadeklarowana jako IEnumerable.

 43
Author: Peter Mortensen, 2010-04-13

4 answers

As I remember

TypeOf data Is System.Data.DataView

Edit:
Jak zauważył James Curran, działa to, jeśli dane są podtypem systemu.Data.DataView również.

Jeśli chcesz ograniczyć to do systemu.Data.Tylko DataView, powinno działać:

data.GetType() Is GetType(System.Data.DataView)
 70
Author: Powerlord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 20:28:35

Pomyślałem, że wrzucę podsumowanie z korzyścią dla programistów C#:

C # val is SomeType

W VB.NET: TypeOf val Is SomeType

W przeciwieństwie do Is, można to negować tylko jako Not TypeOf val Is SomeType

C # typeof(SomeType)

W VB.NET: GetType(SomeType)

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

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

(chociaż Is również działa, patrz dalej)

C # val.ReferenceEquals(something)

W VB.NET: val Is something

Można ładnie zanegować: val IsNot something


C # val as SomeType

W VB.NET: TryCast(val, SomeType)

C# (SomeType) val

W VB.NET: DirectCast(val, SomeType)

(z wyjątkiem przypadków, w których typy zaangażowane implementują operator cast)

 33
Author: Roman Starkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-14 13:41:24

Możesz również użyć TryCast , a następnie sprawdzić, czy nie ma nic, w ten sposób możesz użyć odlewanego typu później . Jeśli nie musisz tego robić, nie rób tego w ten sposób, ponieważ inni są bardziej wydajni.

Zobacz ten przykład:

VB:

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

C #

Panel pnl = c as Panel;
if (pnl != null) {
    pnl.Visible = false;
}
 2
Author: Nick N.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-02 09:55:18

Spróbuj tego.

GetType(Foo)
 1
Author: SubZero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 20:19:28