C# Explizite Typ Conversion (Cast) [Duplikat]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# Explizite Typ Conversion (Cast) [Duplikat]

Post by Anonymous »

Ich verstehe, dass C# es verlangt, dass ich einen Gussausdruck verwenden muss, wenn eine Konvertierung von einer Basisklasse in eine abgeleitete Klasse erforderlich ist ("Downcasting": Gießen Sie einen weniger abgeleiteten Typ zu einem abgeleiteten Typ): < /p>

Code: Select all

class Base { }

class Derived : Base { }

class Program
{
static void Main()
{
Derived derived = (Derived)new Base();
}
}
< /code>
Während ich mir vorstellen kann, dass der Typ in Klammern auf der rechten Seite des gleichen Symbols in gewissem Maße geändert werden kann, wenn Werttypen verwendet werden (z. Zumindest fand ich keine Möglichkeit, beide unterschiedlich zu machen, ohne einen Fehler in meiner IDE zu machen. < /p>
Warum kann mein Code nicht so aussehen: < /p>
class Base { }

class Derived : Base { }

class Program
{
static void Main()
{
Derived derived = new Base();
}
}
Das wäre eine implizite Conversion. Aber da es - zumindest für mich so, scheint es so zu sein - es scheint nur eine einzige mögliche Konvertierung zu geben (die Kombination aus variabler Typ und Inhalt des Gussausdrucks genau übereinstimmt). Warum kann der Gussausdruck nicht weggelassen werden? Kann mir bitte jemand ausführlich erklären, warum "Upcasting" immer "sicher" ist, während "Downcasting" einen Gussausdruck benötigt (als Referenztypen)?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post