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.
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