Syntaxe
Paramètres
Nom |
Description |
expression |
Ce paramètre permet d'indiquer l'expression à affecter avec un nouveau type |
type |
Ce paramètre permet d'indiquer le type de données |
Description
Ce mot réservé permet d'associer un type de données différents (cast) lors de l'utilisation d'une variable.
Remarques
- Dans certaines situations, les tests peuvent être plus rapide avec ce mot réservé pour certains types de données.
- as effectue une conversion de type sécurisée à l'exécution : Le mot clef as permet de convertir une expression vers un type référence ou
nullable, sans lever d'exception si la conversion échoue. Au lieu de provoquer une exception comme un cast classique ((Type)obj), il renvoie null si la conversion est
impossible, ce qui permet un traitement plus sûr.
- Utilisé uniquement pour les types référence et nullable : Contrairement aux cast explicites, as ne peut pas être utilisé avec des types
valeur non-nullables (comme int, double,...). En revanche, il fonctionne avec leurs équivalents nullable (int?, double?) ou
avec des classes et interfaces.
- Permet d'éviter des exceptions InvalidCastException : Quand on utilise un cast explicite, une tentative de conversion incorrecte lève une
exception. Avec as, l'échec de conversion ne lève pas d'erreur, ce qui est particulièrement utile dans des contextes dynamiques, ou quand on n'est pas certain du
type réel de l'objet.
- Souvent combiné avec un test de null : Après avoir utilisé as, on vérifie généralement le résultat avec une condition if (obj != null) pour s'assurer
que la conversion a réussi. Cela remplace les séquences plus lourdes impliquant is puis un cast explicite, rendant le code plus compact et lisible.
- Utile dans les scénarios d'héritage ou d'implémentation d'interfaces : Lorsque vous manipulez des objets via des références de base (comme object ou
une interface), as permet de tester si l'objet peut être traité comme un type plus spécifique (classe dérivée, autre interface), tout en restant performant.
- Moins coûteux que is + cast pour les types complexes : L'utilisation de as évite une double opération : un test (is) puis un cast. Cela peut réduire les
appels internes au runtime et améliorer la performance dans certains scénarios, surtout dans des boucles ou des traitements sur de nombreux objets.
- Ne fonctionne pas avec des conversions personnalisées ou implicites/explicites : Si un type définit des opérateurs de conversion personnalisés
(implicit ou explicit), as ne les utilisera pas. Il repose uniquement sur les conversions compatibles avec l'héritage ou l'implémentation directe. Pour utiliser ces
conversions, il faut faire un cast explicite.
- Rend le code plus lisible et expressif dans les contrôles de type : Le mot clef as est souvent préféré dans du code lisible, surtout lorsqu'il
est combiné avec un if, switch, ou un pattern matching. Il permet d'exprimer clairement une intention
de conversion optionnelle, sans bruit syntaxique ni risque de crash.
Dernière mise à jour : Mardi, le 26 janvier 2016