2010-08-08 6 views
6

ich bemerkt, dass Sie diese Art der Sache in C# tun können:Beispiele für implizite Variablenzuweisung in C#

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

Hinweis der String-Wert implizit auf andere Art umgewandelt wird. Gibt es andere Orte, an denen dies möglich ist? Was sind einige übliche Muster und Praktiken in dieser Art von Dingen?

Antwort

2

Überraschenderweise ich das erste Mal sah dies auf der Wikipedia article über C# Conversion-Betreiber war, habe ich eigentlich nie jemand gesehen benutze das vorher. Scheint, es würde Lesbarkeit verletzen und viele Entwickler verwirren ...

+0

Nach meiner Erfahrung verwirrt es nur Leute, die diese Möglichkeit nicht kennen. Sobald Sie wissen, dass das oben genannte legit-Code ist und dass implizite Konvertierung möglich ist, ist es offensichtlich, dass es einen impliziten Konvertierungsoperator gibt. Diese Art von Konvertierungen ist ohnehin sparsam zu verwenden. – Dykam

1

Grundsätzlich XNamespace bieten einen Operator, der implizite Konvertierung durchführt.

Ich denke, die meisten Common-Sense-Richtlinien gelten, nur dort verwenden, wo es sinnvoll ist und Verwirrung vermeiden. Das größte Problem ist unbeabsichtigte implizite Konvertierung, die möglicherweise für Programmierfehler öffnen könnte. Sie können dies vermeiden und dennoch eine Konvertierung mit einem expliziten Konvertierungsoperator bereitstellen.

Ein Beispiel für einen Fall, in dem Sie einen expliziten Konvertierungsoperator anstelle eines impliziten verwenden möchten, wäre eine Ganzzahlklasse, die die Konvertierung von einem Gleitkommatyp ermöglicht. Eine implizite Konvertierung würde die Trunkierung/Rundung verbergen, die stattfinden müsste und könnte daher den Benutzer sehr verwirrt machen (und wahrscheinlich die Quelle von Fehlern sein.)

In meinem Code habe ich es ein paar Mal benutzt, zum Beispiel in einer sehr einfachen Validierungsergebnisstruktur, die eine implizite Konvertierung zu bool (aber nicht von) lieferte. Dies erlaubte mir, if (result) { ... } zu tun (die Jury ist immer noch über die Nützlichkeit dieser obwohl :)).

Vermutung der größte Teil seiner Verwendung ist für "einfache" Datentypen, wie große ganze Zahlen, Dezimalzahlen und ebenso.

+0

Interessante Verwendung der Umwandlung einer Struktur in bool. –