Warum kann ich das tun?
Sie können das nicht tun, weil die C# -Spezifikation besagt, dass Sie nicht in Abschnitt 10.10.3.
[...] eine Klasse oder Struktur kann nicht erklären, sowohl einen impliziten und expliziten Umwandlungsoperator mit den gleichen Quell- und Zieltypen. Jetzt
Sie könnte auch sagen:
Beantworten eines „Warum“ Frage mit „denn das ist, was er sagt, in der Spezifikation“ ist tief unbefriedigend.
Sie haben eine vage Frage gestellt. Wenn Sie eine spezifischere Antwort wünschen, dann stellen Sie eine spezifischere Frage. Wie wäre es mit:
Welche Faktoren könnte das C# -Designteam bei der Erstellung dieser Regel berücksichtigt haben?
Jede implizite Konvertierung ist bereits eine explizite explizite Konvertierung. Das heißt, wenn es eine implizite Konvertierung ist, die erlaubt:
Shape s = whatever;
Fruit f = s;
dann
Fruit f = (Fruit)s;
ist auch rechtliche und die gleiche Sache bedeuten muss. Es wäre bizarr, wenn diese beiden Anweisungen unterschiedliche Semantiken hätten, aber in einer Welt, in der man zwei verschiedene Versionen derselben Konvertierung deklarieren könnte, eine explizite und eine implizite, müsste der Compiler diese Situation erkennen und sicherstellen, dass die richtige Konvertierung erfolgt benutzt.
Die Konvertierungslogik, insbesondere die benutzerdefinierte Konvertierungslogik, ist in C# äußerst komplex. Das Entfernen unnötiger, verwirrender Komplikationen ist eine gute Idee.
kann ich eine Erklärung für die tiefe Kopie
Sie in einer Frage nicht zwei Fragen stellen. Stellen Sie eine zweite Frage, wenn Sie eine zweite Frage haben.
* Fragen, die uns bitten, ein Buch, ein Tool, eine Softwarebibliothek, ein Lernprogramm oder eine andere Offsite-Ressource zu empfehlen oder zu finden, sind Off-Topic für Stack Overflow * – Eser
Ich schlage vor, Sie bitten Ihren Lehrer um Klarstellung, da diese Anfrage falsch scheint. – juharr
Stellen Sie keine zwei Fragen in einer Frage. Wenn Sie zwei Fragen haben, dann schreiben Sie zwei Fragen. –