Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

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());
               }

           }
       }
   }


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.

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
*/


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

  • 6 Konvertierungen

  • 7.9.11 Der Operator "as"

Anzeigen: