is (référence C#)
Vérifie si un objet est compatible avec un type donné. Par exemple, le code suivant permet de déterminer si un objet est une instance du type MyObject ou un type dérivé de MyObject :
if (obj is MyObject)
{
}
Une expression is prend la valeur true si l'expression fournie n'est pas null, et que l'objet fourni peut être casté en type fourni sans entraîner la levée d'une exception.
Le mot clé is engendre un avertissement de compilation si l'expression doit toujours être true ou false, mais en général il évalue la compatibilité de type au moment de l'exécution.
L'opérateur is ne peut pas être surchargé.
Notez que l'opérateur is considère uniquement les conversions de référence, les conversions boxing et les conversions unboxing. D'autres conversions, comme les conversions définies par l'utilisateur, ne sont pas prises en compte.
Les méthodes anonymes ne sont pas autorisées à gauche de l'opérateur is. Cette exception inclut les expressions lambda.
Exemple
class Class1 {}
class Class2 {}
class Class3 : Class2 { }
class IsTest
{
static void Test(object o)
{
Class1 a;
Class2 b;
if (o is Class1)
{
Console.WriteLine("o is Class1");
a = (Class1)o;
// Do something with "a."
}
else if (o is Class2)
{
Console.WriteLine("o is Class2");
b = (Class2)o;
// Do something with "b."
}
else
{
Console.WriteLine("o is neither Class1 nor Class2.");
}
}
static void Main()
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
Class3 c3 = new Class3();
Test(c1);
Test(c2);
Test(c3);
Test("a string");
}
}
/*
Output:
o is Class1
o is Class2
o is Class2
o is neither Class1 nor Class2.
*/
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 des opérateurs (référence C#)