Das erste, was zu beachten ist, dass VB.NET keine direkte Analog zu C# (type)instance
Casting-Mechanismus hat. Ich bringe das auf, weil es nützlich ist, das als Ausgangspunkt beim Vergleich der beiden VB.NET-Operatoren zu verwenden (und sie sind Operatoren, keine Funktionen, obwohl sie eine Funktionssemantik haben).
DirectCast()
ist strenger als der C# Casting-Operator. Es erlaubt Ihnen nur zu gießen, wenn der Artikel, der gerade gecastet wird, ist der Typ, den Sie werfen. Es wird keine Konvertierung durchgeführt. So können Sie beispielsweise nicht von "Kurz" in "Int" umwandeln, wie dies bei einem C# (int)
Cast der Fall ist. Sie können jedoch von einem IEnumerable in ein Array umwandeln, wenn Ihre zugrunde liegende IEnumerable
Objektvariable wirklich eine Array
ist. Und natürlich können Sie von Object zu irgendetwas umwandeln, vorausgesetzt, der Typ Ihrer Objektinstanz ist tatsächlich unterhalb des Darstellers in der Vererbungsstruktur.
Dies ist wünschenswert, denn das macht es schneller. Es gibt ein bisschen weniger Konvertierung und Typprüfung, die stattfinden muss.
CType()
ist weniger streng als der C# Casting-Operator. Es wird Dinge wie eine Zeichenfolge in eine Ganzzahl konvertieren, die Sie nicht einfach mit einer einfachen (int)
Besetzung tun können. Es hat so viel Power wie das Aufrufen von Convert.To___()
in C#, wobei ___ der Zieltyp Ihrer Besetzung ist. Dies ist wünschenswert, weil es sehr leistungsfähig ist, aber diese Leistung auf Kosten der Leistung geht. — Es ist nicht so schnell wie der Cast-Operator von DirectCast() oder C#, da es ziemlich viel Arbeit zu erledigen gibt.
Im Allgemeinen sollten Sie DirectCast()
bevorzugen, wenn Sie können.
Schließlich haben Sie einen Casting - Operator verpasst: TryCast()
, der direkt analog zu C# as
Operator ist.
Genaue Duplikat dieser * Casting Datatypes mit Direct, CType, TryCast * http://stackoverflow.com/questions/2703585/casting-datatypes-with-directcast-ctype-trycast – MarkJ
Mögliche Duplikat [Casting Datatypes mit Direct, CTyp, TryCast] (https: // stackoverflow.com/questions/2703585/casting-datatypes-mit-directcast-ctype-trycast) – Imad