Der Unterschied zwischen Cast() und OfType() in LINQ: tiefgreifendes Verständnis
Wenn Sie in LINQ mit Sammlungen arbeiten, die Elemente unterschiedlichen Typs enthalten können, müssen Sie möglicherweise die gesamte Sammlung in einen bestimmten Typ konvertieren. LINQ stellt hierfür zwei Methoden zur Verfügung: Cast() und OfType().
Cast()-Methode
Cast() versucht, alle Elemente in der Sammlung in den angegebenen Typ zu konvertieren. Wenn ein Element nicht erfolgreich umgewandelt werden kann, wird eine InvalidCastException ausgelöst. Diese Methode ist nützlich, wenn Sie sicher sind, dass alle Elemente in der Sammlung in den erforderlichen Typ konvertiert werden können.
OfType()-Methode
Im Gegensatz zu Cast() gibt OfType() nur Elemente in der Sammlung zurück, die sicher in den angegebenen Typ umgewandelt werden können. Es wird nicht versucht, alle Elemente zu konvertieren, daher wird keine Ausnahme ausgelöst. Diese Methode ist nützlich, wenn Sie nur konvertierbare Elemente herausfiltern möchten.
Beispielverwendung
Bedenken Sie den folgenden Code:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Wenn Sie versuchen, Cast() zu verwenden, um dieses Array in eine Sammlung von Zeichenfolgen zu konvertieren, erhalten Sie eine InvalidCastException, da eines der Elemente eine Ganzzahl ist.
<code class="language-csharp">IEnumerable<string> someCollection = objs.Cast<string>();</code>
Wenn Sie jedoch OfType() verwenden, werden nur Elemente zurückgegeben, die sicher in einen String konvertiert werden können.
<code class="language-csharp">IEnumerable<string> someCollection = objs.OfType<string>();</code>
In diesem Fall enthält someCollection nur ein Element: „12345“.
Zusammenfassung
Cast() und OfType() sind zwei LINQ-Methoden, die bei der Arbeit mit Sammlungen gemischter Typen unterschiedliche Zwecke erfüllen. Cast() versucht, alle Elemente umzuwandeln, während OfType() nur Elemente auswählt, die sicher umzuwandeln sind. Verwenden Sie Cast(), wenn Sie sich bei der Typumwandlung sicher sind; verwenden Sie OfType(), wenn Sie nur gültige Elemente herausfiltern möchten.
Das obige ist der detaillierte Inhalt vonCast() oder OfType() in LINQ: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!