Frage

ich bemerkt, dass Sie diese Art der Sache in C # tun können:

XNamespace c = "http://s.opencalais.com/1/pred/";

Beachten Sie den String-Wert implizit auf andere Art umgewandelt. Gibt es andere Orte, an denen kann getan werden? Was sind einige gemeinsame Muster und Praktiken rund um diese Art der Sache?

War es hilfreich?

Lösung

Dies geschieht, wenn ein implizite Konvertierung Operator definiert ist. Insgesamt ist es ziemlich selten.

Andere Tipps

sollte dies helfen http://msdn.microsoft.com/en-us/library/z5z9kes2. aspx

edit: Matt ninja'd es:)

Überraschenderweise das erste Mal, dass ich dies sah, war auf der Wikipedia-Artikel über C # Conversion Betreiber, ich habe eigentlich nie jemand Gebrauch gesehen dieses vor. Scheint, wie wäre es Lesbarkeit verletzt und viele Entwickler ...

verwirren

XNamespace Grundsätzlich bietet einen Operator, führt eine implizite Konvertierung.

ich denke, die meisten gesunden Menschenverstand Richtlinien gelten, ist es nur zu verwenden, wo es sinnvoll und Verwirrung zu vermeiden macht. Das größte Problem ist unbeabsichtigte implizite Konvertierung, die möglicherweise Fehler bei der Programmierung öffnen könnte. Sie können dies vermeiden und dennoch eine Umsetzung mit einem expliziten Konvertierungsoperator.

Ein Beispiel für einen Fall, in dem Sie einen expliziten Umwandlungsoperator wünschen würden statt einem implizit man verwenden wäre eine ganze Zahl Klasse sein, die Umwandlung von einem Gleitkommatyps erlaubt; eine implizite Konvertierung würde das Abschneiden verstecken / dass Rundung würde stattfinden und damit der Benutzer sehr verwirrt machen könnte (und wahrscheinlich auch die Fehlerquelle sein.)

In meinem Code habe ich es ein paar Mal, zum Beispiel in einer sehr einfachen Prüfungsergebnis Struktur verwendet, die implizite Konvertierung in bool vorgesehen (aber nicht aus). Das erlaubte mir if (result) { ... } zu tun (die Jury ist noch nicht über den Nutzen dieser aber:)).

Erraten der meisten seiner Verwendung für „einfache“ Datentypen sind, wie große Zahlen, Dezimalzahlen und ebenfalls.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top