Heim >Backend-Entwicklung >C++ >Cast() vs. OfType() in LINQ: Wann sollte ich jedes verwenden?

Cast() vs. OfType() in LINQ: Wann sollte ich jedes verwenden?

Linda Hamilton
Linda HamiltonOriginal
2025-01-17 04:41:12825Durchsuche

Cast() vs. OfType() in LINQ: When Should I Use Each?

Auswahl zwischen Cast() und OfType() in Linq

Im Bereich von LINQ können Typen von einer ArrayList in ein IEnumerable umgewandelt werden kann mit zwei Methoden erreicht werden: Cast() und OfType(). Das Verständnis ihrer Nuancen ist entscheidend für die Auswahl des geeigneten Ansatzes für verschiedene Szenarien.

Cast() versucht, jedes Element in der ArrayList so umzuwandeln, als ob es vom angegebenen Typ wäre. Alle Elemente, die nicht erfolgreich umgewandelt werden können, führen dazu, dass eine InvalidCastException-Ausnahme ausgelöst wird.

OfType() hingegen gibt nur Elemente zurück, die sicher in den angegebenen Typ umgewandelt werden können. Es überspringt alle Elemente, die nicht umgewandelt werden können, und filtert die ArrayList effektiv so, dass sie nur Elemente des gewünschten Typs enthält.

Wann jede Methode verwendet werden sollte

  • Verwenden Sie Cast(), wenn: Sie einen bestimmten Typ für alle Elemente in der ArrayList erzwingen möchten, auch wenn dies den Ausschluss von Elementen bedeutet, die dies nicht können cast.
  • Verwenden Sie OfType(), wenn: Sie die ursprüngliche ArrayList beibehalten und nur mit Elementen arbeiten möchten, die sicher in den angegebenen Typ umgewandelt werden können.

Anschauliches Beispiel

Bedenken Sie Folgendes ArrayList:

object[] objs = new object[] { "12345", 12 };
  • objs.Cast().ToArray(); löst eine InvalidCastException aus, da das zweite Element nicht in einen String umgewandelt werden kann.
  • objs.OfType().ToArray(); gibt { "12345" } zurück, da nur das erste Element in einen String umgewandelt werden kann.

Das obige ist der detaillierte Inhalt vonCast() vs. OfType() in LINQ: Wann sollte ich jedes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn