Partager via


as (référence C#)

Vous pouvez utiliser l'opérateur d' as pour exécuter certains types de conversions entre des types référence compatibles ou l' types Nullable. Le code suivant est fourni à titre d'exemple.

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

           }
       }
   }

Notes

L'opérateur as est semblable à une opération de cast. Toutefois, si la conversion n'est pas possible, as retourne null au lieu de lever une exception. Prenons l'exemple suivant :

expression as type

Le code équivaut à l'expression suivante sauf que la variable d' expression est évaluée qu'une seule fois.

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

Notez que l'opérateur d' as exécute uniquement des conversions de référence, des conversions nullables, et les conversions boxings. L'opérateur d' as ne peut pas exécuter d'autres conversions, telles que les conversions définies par l'utilisateur, qui doivent plutôt être exécutées à l'aide de expressions de cast.

Exemple

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

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Mots clés C#

is (référence C#)

?:, opérateur (référence C#)

Mots clés des opérateurs (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#