Le ECMA Common Language documentation de l'infrastructure dit ceci au sujet du CIL "isinst classe" instruction:instruction CIL "isinst <valuetype>"
CIL correcte garantit que classe est un typeref valide ou typedef ou un jeton TypeSpec indiquant une classe, et que obj est toujours soit null soit une référence d'objet.
Ceci implique qu'un type de valeur n'est pas autorisé, n'est-ce pas? Mais mscorlib.dll contient une méthode System.RuntimeTypeHandle :: equals (Object obj) avec l'instruction suivante:
IL_0001: isinst System.RuntimeTypeHandle
Et System.RuntimeTypeHandle est un valuetype. Quelqu'un peut-il me mettre ici?
En d'autres termes, "isinst" signifie vraiment "isinst "? –
TonyK
@TonyK - Je crois que c'est correct - notez que votre partie citée de la spécification indique que _obj_ doit être null ou une référence d'objet, donc cela n'aurait pas de sens que ce soit un type de valeur sans boîte. – kvb
En fait, 'is 'est traduit en' isinst int32'. Dans le réflecteur 'int32' peut être cliqué et des références à' System.Int32'. La même chose avec d'autres types de valeur comme 'bool'. – Andreas