Freigeben über


as (C#-Referenz)

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


   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 der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

Referenz

C#-Schlüsselwörter

is (C#-Referenz)

Operator ?: (C#-Referenz)

Operatorschlüsselwörter (C#-Referenz)

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

C#-Referenz