Unterschiede zwischen Cast() und OfType() bei der LINQ-Typkonvertierung
Bei der Verwendung von LINQ zur Verarbeitung von ArrayList und Typkonvertierung sind die beiden Methoden Cast()
und OfType()
besonders hervorzuheben. Das Verständnis ihrer Unterschiede ist für eine effektive Typenverarbeitung von entscheidender Bedeutung.
Vergleich von Cast() und OfType()
Cast()
:
InvalidCastException
Ausnahme ausgelöst. OfType()
:
Anwendung
Cast()
: Verwenden Sie diese Methode, wenn Sie sicher sind, dass alle Elemente in der ArrayList in den erforderlichen Typ konvertiert werden können. Dieser Ansatz ist effizient, setzt jedoch voraus, dass die Daten gültig sind. OfType()
: Verwenden Sie diese Methode, wenn Sie Elemente herausfiltern müssen, die nicht in den erforderlichen Typ konvertiert werden können. Es bietet eine sicherere Möglichkeit, potenzielle Ausnahmen aufgrund ungültiger Konvertierungen zu verhindern. Beispiel
Betrachten Sie ein Array von Objekten:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Verwenden Sie Cast()
, um dieses Array zu konvertieren:
<code class="language-csharp">objs.Cast<string>().ToArray();</code>
führt zu einer InvalidCastException
-Ausnahme, da das Element „12“ nicht in eine Zeichenfolge konvertiert werden kann.
Verwenden Sie OfType()
, um Folgendes zu konvertieren:
<code class="language-csharp">objs.OfType<string>().ToArray();</code>
erzeugt ein Array mit nur einem Element:
<code class="language-csharp">{ "12345" }</code>
Dies zeigt, wie OfType()
effektiv Elemente herausfiltern kann, die nicht sicher konvertiert werden können.
Das obige ist der detaillierte Inhalt vonCast() vs. OfType() in LINQ: Wann sollte welches für die Typsicherheit verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!