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
Referenz
Operatorschlüsselwörter (C#-Referenz)