as (C#-Referenz)as (C# Reference)

Sie können den as-Operator verwenden, um bestimmte Arten von Konvertierungen zwischen kompatiblen Verweistypen oder auf NULL festlegbaren Typen durchzuführen.You can use the as operator to perform certain types of conversions between compatible reference types or nullable types. Der folgende Code zeigt ein Beispiel.The following code shows an example.

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

        }
    }
}

Wie das Beispiel zeigt, müssen Sie das Ergebnis des as-Ausdrucks mit null vergleichen, um zu überprüfen, ob eine Konvertierung erfolgreich war.As the example shows, you need to compare the result of the as expression with null to check if a conversion is successful. Ab C# 7.0 können Sie den is-Ausdruck verwenden, um zu testen, ob eine Konvertierung erfolgreich war. Wenn die Konvertierung erfolgreich war, können Sie den Ausdruck auch verwenden, um bedingt eine Variable zuzuweisen.Beginning with C# 7.0, you can use the is expression both to test that a conversion succeeds and conditionally assign a variable when the conversion succeeds. In vielen Szenarien ist dies präziser als die Verwendung des as-Operators.In many scenarios, it's more concise than using the as operator. Weitere Informationen finden Sie im Abschnitt Typmuster des Artikels zum is-Operator.For more information, see the Type pattern section of the is operator article.

HinweiseRemarks

Der as-Operator kann mit einem Umwandlungsvorgang verglichen werden.The as operator is like a cast operation. Wenn die Konvertierung jedoch nicht möglich ist, gibt as null zurück, statt eine Ausnahme auszulösen.However, if the conversion isn't possible, as returns null instead of raising an exception. Betrachten Sie das folgende Beispiel:Consider the following example:

expression as type  

Der Code ist äquivalent zu folgendem Ausdruck, jedoch wird die expression-Variable nur einmal ausgewertet.The code is equivalent to the following expression except that the expression variable is evaluated only one time.

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

Beachten Sie, dass der as-Operator nur Verweis- und Boxingkonvertierungen sowie Konvertierungen mit Nullwert durchführt.Note that the as operator performs only reference conversions, nullable conversions, and boxing conversions. Der as-Operator kann keine anderen Konvertierungen wie z.B. benutzerdefinierte Konvertierungen durchführen, die stattdessen mithilfe der Cast-Ausdrücke ausgeführt werden sollten.The as operator can't perform other conversions, such as user-defined conversions, which should instead be performed by using cast expressions.

BeispielExample

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#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen finden Sie unter Der as-Operator in der C#-Sprachspezifikation.For more information, see The as operator in the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also