Veuillez dire quelle est la différence entre is
et as
mot-clé en C#
Réponses
Trop de publicités?Jetez un coup d'œil à la vidéo youtube ci-dessous qui explique la différence de manière plus démonstrative et visuelle :-.
https://www.youtube.com/watch?v=IKmRtJcRX_I
Vous trouverez ci-dessous la réponse longue avec l'explication du code.
Le mot-clé "IS" est utile pour vérifier si les objets sont compatibles avec un type. Par exemple, dans le code ci-dessous, nous vérifions si l'objet "ocust" est un type de la classe "Customer".
object ocust = new Customer();
if (ocust is Customer)
{
Le mot clé "AS" permet de faire la conversion d'un type à un autre. Par exemple, dans le code ci-dessous, nous convertissons un objet en un type de données string. Si le mot-clé "AS" n'est pas capable de convertir le type, il retourne NULL.
object o = "somestring";
string str = o as string;
Les deux opérateurs sont utilisés pour le moulage de type sûr.
AS Opérateur :
L'opérateur AS vérifie également si le type d'un objet donné est compatible avec le nouveau type d'objet. Ce mot-clé vérifiera si le type d'un objet donné est compatible avec le nouveau type d'objet. S'il n'est pas compatible avec le nouveau type, il renvoie NULL.
Opérateur IS :
Cet opérateur vérifie si le type d'un objet est compatible avec le nouvel objet. S'il est compatible, il renvoie true sinon false.
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.
1 votes
@MaxBarraclough : Merci pour la note ; Microsoft a plusieurs fois maintenant déplacé les archives de mon blog sans faire de liens de redirection. J'ai fait une copie de l'article original dans le premier commentaire ici : ericlippert.com/2010/09/16/is-is-as-or-is-as-is . Je posterai un lien vers le second dans un commentaire ultérieur.
0 votes
@MaxBarraclough : Le lien mis à jour pour le second est : ericlippert.com/2009/10/08/ -- Merci encore.