126 votes

Différence entre le mot-clé is et as

Veuillez dire quelle est la différence entre is et as mot-clé en C#

7 votes

Est-ce que c'est comme ça ou est-ce que c'est comme ça ? blogs.msdn.com/b/ericlippert/archive/2010/09/16/

3 votes

Si ce sujet vous intéresse, vous voulez probablement aussi savoir quelle est la différence entre les opérateurs "as" et "cast" : blogs.msdn.com/b/ericlippert/archive/2009/10/08/

0 votes

@EricLippert Ce lien est maintenant rompu.

3voto

Patrick Peters Points 2860

Je dirais : lisez MSDN en ligne, mais c'est ici :

L'opérateur is vérifie si un objet est compatible avec un type donné, et le résultat de l'évaluation est un booléen : vrai ou faux.

L'opérateur as ne lèvera jamais d'exception.

3voto

3voto

Haris Points 460

Opérateur IS

L'opérateur IS vérifie si le type d'un objet donné est compatible avec le nouveau type d'objet. Il renvoie une valeur de type booléen : vrai si l'objet donné est compatible avec le nouveau type, sinon faux. De cette façon, l'opérateur IS vous aide à faire un casting de type sûr.

Comment le faire..

Object obj = new Object(); // Creates a new Object obj
// checking compatibility of obj object with other type
Boolean b1 = (obj is Object); // b1 is set to true.
Boolean b2 = (obj is Employee); // The cast fails: no exception is thrown, but b2 is set to false.
//we can also use it 
if (obj is Employee) 
{
 Employee emp = (Employee) obj;
 // TO DO:
}

Note

Si la référence de l'objet donné est nulle, l'opérateur IS retournera false puisqu'il n'y a pas d'objet disponible pour vérifier son type. De cette façon, le CLR vérifie le type de l'objet obj deux fois. La première fois dans la condition if et si c'est vrai, dans le bloc if. En fait, cela affecte les performances car à chaque fois, CLR va parcourir la hiérarchie d'héritage, en vérifiant chaque type de base par rapport au type spécifié (Employee). Pour éviter cela, nous avons l'opérateur AS.

Opérateur AS

L'opérateur AS vérifie également si le type d'un objet donné est compatible avec le nouveau type d'objet. Il renvoie une valeur non nulle si l'objet donné est compatible avec le nouvel objet, sinon une valeur nulle. De cette façon, l'opérateur AS vous aide à faire un casting de type sûr. Le code ci-dessus peut être réécrit en utilisant l'opérateur AS d'une meilleure manière.

Comment le faire..

Object obj = new Object(); // Creates a new Object obj
// checking compatibility of obj object with other type
Employee emp = obj as Employee; // The cast fails: no exception is thrown, but emp is set to null.
if (emp != null) 
{
 // TO:DO
}

Note

Si la référence de l'objet donné est nulle, l'opérateur AS retournera NULL puisqu'il n'y a pas d'objet disponible pour vérifier son type. L'opérateur AS effectue uniquement des conversions de référence, des conversions de type nullable et des conversions de type boxing. Cet opérateur ne peut pas effectuer d'autres conversions comme les conversions définies par l'utilisateur.

2voto

Pankaj Ikhar Points 21

L'opérateur Is, un cast, renvoie vrai s'il réussit. Il renvoie false si le cast échoue. Avec lui, vous ne pouvez pas capturer la variable convertie. L'opérateur is-cast n'est idéal que si la variable résultante ne sera pas utilisée par la suite.

Tout comme un casting. Avec lui, on gagne en performance et on évite les exceptions lorsqu'un cast est invalide. Null est retourné lorsque le cast est impossible. Pour les types de référence, le as-cast est recommandé. Elle est à la fois rapide et sûre. Nous pouvons tester la variable résultante par rapport à null, puis l'utiliser. Cela élimine les castings supplémentaires

2voto

azhar abbasi Points 29
  1. L'opérateur is vérifie si l'objet est compatible avec le type donné. type donné ; le résultat est basé sur vrai ou faux.
  2. comme est utilisé pour convertir un type en un autre type et lors de la conversion en cas d'échec, le résultat est nul, sauf si une exception est levée. voir le lien pour une meilleure compréhension avec des exemples https://blogs.msdn.microsoft.com/prakasht/2013/04/23/difference-between-direct-casting-is-and-as-operator-in-c/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X