C #: 'ist' Keyword und prüft auf Nicht

Dies ist eine dumme Frage, aber Sie können diesen code verwenden, um zu überprüfen, ob etwas einen bestimmten Typ...

if (child is IContainer) { //....

Gibt es eine elegantere Möglichkeit zu prüfen, für die "NICHT" - Instanz?

if (!(child is IContainer)) { //A little ugly... silly, yes I know...

//these don't work :)
if (child !is IContainer) {
if (child isnt IContainer) { 
if (child aint IContainer) { 
if (child isnotafreaking IContainer) { 

Ja, ja... dumme Frage....

Denn es gibt einige Frage auf das, was der code aussieht, es ist einfach eine Rückkehr an den Anfang einer Methode.

public void Update(DocumentPart part) {
    part.Update();
    if (!(DocumentPart is IContainer)) { return; }
    foreach(DocumentPart child in ((IContainer)part).Children) {
       //...etc...
Kommentar zu dem Problem
Ich persönlich mag das "Kind isnotafreaking ...". Ich bin Stimmabgabe zu haben, dass das Schlüsselwort in C# 5 Kommentarautor: Joseph
Ich bin daran interessiert zu wissen, die situation, die Sie verwenden würden? Was bedeutet der "else" - Teil dieser code Aussehen und kann man nicht einfach umkehren? Wenn dein code das sagt, "wenn das Kind nicht ein IContainer dann exceptions werfen" oder "wenn das Kind nicht ein IContainer dann vielleicht ist es ein "ifoo") vom so, ich werde versuchen, dass weiter", dann gibt es nicht eine implizite else-Anweisung gibt es? Ich bin wahrscheinlich etwas fehlt. Kommentarautor: Martin Peck
@MartinPeck, könnte es nicht sein, eine else-Klausel. Das ist der Grund, warum ich gesucht. Kommentarautor: Joshua Walsh
@MartinPeck hier ist ein Beispiel: if (!(argument ist MapsControlViewModel vm)) { return; } - ich könnte umkehren, wenn und legte die whoooole rest der Methode innerhalb der if - Klammern, aber dann würd ich bekomme Weihnachts-Baum-code, mit einer Menge von schließenden Klammern am Ende der Methode. Das ist viel weniger lesbar. Kommentarautor: ANeves

InformationsquelleAutor der Frage Hugoware | 2009-05-01

Schreibe einen Kommentar