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

Cast() vs. OfType() in LINQ: Wann sollte ich jedes für die Typkonvertierung verwenden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 04:46:08227Durchsuche

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

Typkonvertierung in LINQ: Detaillierte Erläuterung der Methoden Cast() und OfType()

LINQ (Language Integrated Query) ist ein leistungsstarkes Tool im .NET Framework, mit dem Entwickler Daten mithilfe vertrauter Syntax abfragen und transformieren können. Wenn Sie Elemente in ArrayList in IEnumerable konvertieren müssen, gibt es zwei Hauptmethoden: Cast() und OfType().

Cast()-Methode

Die Cast()-Methode wird verwendet, um alle Elemente in der ArrayList explizit in den angegebenen Typ zu konvertieren. Es wird versucht, jedes Element unabhängig von seinem tatsächlichen Typ in den Zieltyp umzuwandeln. Wenn die Umwandlung eines Elements fehlschlägt, wird eine InvalidCastException ausgelöst.

OfType()-Methode

Die

OfType()-Methode konvertiert selektiv nur die Elemente, die sicher in den Zieltyp konvertiert werden können. Es gibt ein IEnumerable zurück, das nur Elemente enthält, die dem angegebenen Typ entsprechen. Alle Elemente, die nicht konvertiert werden können, werden aus der Ergebnismenge ausgeschlossen.

Anwendbare Szenarien für die Methoden Cast() und OfType()

Die Wahl von Cast() oder OfType() hängt von Ihren spezifischen Anforderungen ab:

  • Cast() verwenden:

    • Sie sind sicher, dass alle Elemente in der ArrayList erfolgreich in den Zieltyp konvertiert werden können.
    • Sie möchten jedes Element als Zieltyp behandeln, auch wenn sein tatsächlicher Typ unterschiedlich ist.
  • Verwendung von OfType():

    • Sie gehen davon aus, dass die ArrayList möglicherweise einige Elemente enthält, die nicht in den Zieltyp konvertiert werden können.
    • Sie möchten sich nur mit Elementen befassen, die sicher konvertiert werden können.

Beispiel

Angenommen, Sie haben eine ArrayList mit Zeichenfolgen und Ganzzahlen:

<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
  • Verwenden Sie Cast():

    <code class="language-csharp">  try
      {
          string[] strArr = objs.Cast<string>().ToArray();
      }
      catch (InvalidCastException)
      {
          // 处理异常
      }</code>

    In diesem Fall versucht Cast(), beide Elemente in Strings umzuwandeln. Da einer davon eine Ganzzahl ist, wird eine InvalidCastException ausgelöst.

  • Use OfType():

    <code class="language-csharp">  string[] strArr = objs.OfType<string>().ToArray(); // 只包含 "12345"</code>

    OfType() ruft erfolgreich Zeichenfolgenelemente aus der ArrayList ab und schließt ganzzahlige Elemente aus.

Wenn Sie den Unterschied zwischen Cast() und OfType() verstehen, können Sie bei der Verwendung von LINQ Typen effektiv konvertieren und Daten filtern und so die Genauigkeit und Zuverlässigkeit von Abfragen sicherstellen.

Das obige ist der detaillierte Inhalt vonCast() vs. OfType() in LINQ: Wann sollte ich jedes für die Typkonvertierung 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