Freigeben über


as (C#-Referenz)

Aktualisiert: November 2007

Der Operator as wird verwendet, um bestimmte Konvertierungen zwischen kompatiblen Referenztypen auszuführen. Beispiel:

   class csrefKeywordsOperators
   {
       class Base
       {
           public override string  ToString()
           {
                 return "Base";
           }
       }
       class Derived : Base 
       { }

       class Program
       {
           static void Main()
           {

               Derived d = new Derived();

               Base b = d as Base;
               if (b != null)
               {
                   Console.WriteLine(b.ToString());
               }

           }
       }
   }

Hinweise

Der Operator as kann mit einem Umwandlungsvorgang verglichen werden. Wenn allerdings keine Konvertierung möglich ist, gibt as das Ergebnis null zurück, statt eine Ausnahme auszulösen. Betrachten Sie hierzu den folgenden Ausdruck:

expression as type

Er entspricht dem folgenden Ausdruck, mit der Ausnahme, dass expression nur ein Mal ausgewertet wird.

expression is type ? (type)expression : (type)null

Beachten Sie, dass der Operator as nur Verweis- und Boxingkonvertierungen ausführt. Andere Konvertierungen, z. B. benutzerdefinierte Konvertierungen, werden vom Operator as nicht unterstützt. Diese sollten stattdessen mithilfe von Umwandlungsausdrücken ausgeführt werden.

Beispiel

class ClassA { }
class ClassB { }

class MainClass
{
    static void Main()
    {
        object[] objArray = new object[6];
        objArray[0] = new ClassA();
        objArray[1] = new ClassB();
        objArray[2] = "hello";
        objArray[3] = 123;
        objArray[4] = 123.4;
        objArray[5] = null;

        for (int i = 0; i < objArray.Length; ++i)
        {
            string s = objArray[i] as string;
            Console.Write("{0}:", i);
            if (s != null)
            {
                Console.WriteLine("'" + s + "'");
            }
            else
            {
                Console.WriteLine("not a string");
            }
        }
    }
}
/*
Output:
0:not a string
1:not a string
2:'hello'
3:not a string
4:not a string
5:not a string
*/

C#-Programmiersprachenspezifikation

Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:

  • 6 Konvertierungen

  • 7.9.11 Der Operator "as"

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

C#-Schlüsselwörter

is (C#-Referenz)

Operator ?: (C#-Referenz)

Operatorschlüsselwörter (C#-Referenz)

Weitere Ressourcen

C#-Referenz