as-keyword

___ qstnhdr ___ Gibt es zwingende Gründe gegen die Verwendung des C # -Schlüsselwortes "as"? ___ answer569554 ___

Ich bevorzuge in den meisten Fällen Umwandlungen mit %code% , weil normalerweise ein falscher Typ des Objekts einen Fehler anzeigt. Bugs sollten Ausnahmen verursachen IMO - und ein %code% bei genau der Zeile, die den Cast durchführt, ist viel klarer als ein %code% viel später im Code.

%code% sollte verwendet werden, wenn es gültig und legal ist, dass ein Verweis auf ein Objekt des Typs übergeben wurde, den Sie nicht möchten. Diese Situation kommt auf, aber nicht so oft wie in meiner Erfahrung üblich.

Das Vergleichen von Typen mit %code% ist jedoch sehr selten die richtige Lösung - es ist nur dann sinnvoll, wenn Sie nach dem genauen Typ und nicht nach einem kompatiblen Typ suchen möchten.

Ich habe ein deutlich länger geschrieben antworten Sie über die Diskussion "Cast vs as" woanders.

    
___ answer569552 ___

Im Allgemeinen sind diese beiden Snippets nicht äquivalent. %code% liefert ein korrektes Ergebnis, auch wenn %code% ein Ur-Enkel von %code% ist, während %code% nur dann %code% ist, wenn %code% genau% co_de ist % und keine seiner möglichen Unterklassen.

    
___ answer569535 ___

"as": gutes Zeug. benutze es die ganze Zeit.

Wenn Sie wirklich eine Alternative zum manuellen Vergleichen von Typen wünschen, versuchen Sie:

%Vor%

liest sich noch besser.

    
___ qstntxt ___

Ich finde das mit dem folgenden:

%Vor%

ist einfacher zu schreiben und zu verstehen als:

%Vor%

Gibt es zwingende Gründe, nicht das erste Konstrukt zu verwenden?

    
___ answer569542 ___

Ihr Beispiel wäre besser geschrieben als:

%Vor%

Es ist genau diese doppelte Überprüfung, dass der %code% -Operator helfen kann zu vermeiden. Also für Ihr genanntes Beispiel würde ich sagen, dass es definitiv eine gute Lösung ist.

Es gibt jedoch Situationen, in denen Sie wirklich eine Besetzung wünschen. Wenn Sie %code% erwarten und nichts anderes möchten, sorgt das Casting dafür, dass %code% ausgelöst wird, wenn Sie etwas anderes erhalten.

Wie in den meisten Situationen gibt es hier keine allgemeine Regel: Verwenden Sie das richtige Werkzeug für den richtigen Job .

    
___ answer569527 ___

Überhaupt nicht - es gibt Ihnen die Möglichkeit zu überprüfen, dass die Konvertierung (Cast) OK war. Wenn du es tust

%Vor%

Sie erhalten möglicherweise eine Ausnahme, wenn die Umwandlung fehlschlägt.

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ answer569550 ___

Wenn Sie einen einfachen (nicht nullbaren) Werttyp wünschen, funktioniert das natürlich nicht, zB:

%Vor%

ist jedoch nicht gültig:

%Vor%

ist erlaubt.

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123types ___ Typen und Typsysteme werden verwendet, um Abstraktionsstufen in Programmen zu erzwingen. ___ tag123casting ___ Casting ist ein Prozess, bei dem ein Objekttyp explizit in einen anderen Typ konvertiert wird, wenn die Konvertierung zulässig ist. Dieser Prozess könnte zu einer Wertänderung führen. ___ answer569538 ___

"as" ist schneller, aber zu beachten sind:

  • "as" gibt eine Null zurück, anstatt eine Ausnahme auszulösen, wenn das ein Problem ist

  • Es werden keine benutzerdefinierten Konvertierungen in

  • ausgeführt
  • funktioniert nicht für Referenz- & gt; -Wert

Edit: "as" ist definitiv schneller ( Ссылка )

Edit2: also im Grunde eine Geschwindigkeit vs Sicherheit Entscheidung

    
___ answer569539 ___

Nein, ich benutze es ziemlich oft. Damit können Sie %code% s sauber vermeiden.

Zum Beispiel:

%Vor%

im Gegensatz zu:

%Vor%     
___ tag123asschlüsselwort ___ hilf uns dieses Wiki zu bearbeiten ___ answer569574 ___

Wenn ein falscher Typ ein Fehler ist, sollten Sie einen Cast verwenden. Der Grund dafür ist, dass es wirklich ein Problem gibt und Sie darüber Bescheid wissen sollten.

Wenn es möglich ist, dass der Wert Null ist und dies kein Fehler im System ist, dann benutze "as". Der Grund dafür ist, dass Sie "as" immer dann verwenden sollten, wenn ein Nullwert akzeptiert wird.

Beachten Sie, dass Sie "as" nicht verwenden können, um in Werttypen zu konvertieren, da der Nullwert für sie nicht akzeptabel ist. Wenn Sie einen Werttyp haben und "wie" verwenden möchten, müssen Sie einen Nullwerttyp verwenden.

​​Wann "als" im Vergleich zu Casting

zu verwenden ist     
___
9
Antworten

Gibt es zwingende Gründe gegen die Verwendung des C # -Schlüsselwortes "as"?

Ich finde das mit dem folgenden: %Vor% ist einfacher zu schreiben und zu verstehen als: %Vor% Gibt es zwingende Gründe, nicht das erste Konstrukt zu verwenden?     
20.02.2009, 13:12