Toets 'n voorwerp vir wat nie 'n tipe
Vra
Ek weet hoe om 'n voorwerp te toets om te sien of dit is 'n soort, met behulp van die IS navraag Bv.
if (foo is bar)
{
//do something here
}
maar hoe kan jy toets vir dit nie "bar" ?, ek kan nie lyk na 'n navraag wat werk met is om te toets vir 'n negatiewe resultaat vind.
BTW - Ek het 'n aaklige gevoel dit is soooo duidelik, so jammer by voorbaat ...
Oplossing
if (!(foo is bar)) {
}
Ander wenke
Jy kan ook die as operateur .
Die as operateur gebruik word om uit te voer herleiding tussen versoenbaar tipes.
bar aBar = foo as bar; // aBar is null if foo is not bar
Daar is geen spesifieke navraag
if (!(foo is bar)) ...
if (foo.GetType() != bar.GetType()) .. // foo & bar should be on the same level of type hierarchy
Jy moet verduidelik of jy wil toets wat 'n voorwerp is presies 'n sekere tipe of oordraagbaar van 'n sekere tipe. Byvoorbeeld:
public class Foo : Bar {}
En veronderstel jy het:
Foo foo = new Foo();
As jy wil weet of cat nie Bar (), dan sou jy dit doen:
if(!(foo.GetType() == tyepof(Bar))) {...}
As jy wil om seker te maak dat cat nie trek uit Bar, dan 'n maklike tjek is aan die gebruik as navraag.
Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}