MyClassName je me demandais quelle est la meilleure méthode pour les objets de coulée pour C#:(MyClassName) objet par rapport à l'objet comme
MyClassName test = (MyClassName)object;
MyClassName test = object as MyClassName;
Je sais déjà que si vous faites la première façon, vous obtenez une exception, et la seconde façon de définir le test comme nul. Cependant, je me demandais pourquoi faire l'un sur l'autre? Je vois la première façon beaucoup, mais j'aime la deuxième façon parce que je peux vérifier la nullité ...
S'il n'y a pas une «meilleure façon» de le faire, quelles sont les lignes directrices pour l'utilisation d'un sens ou l'autre?
Je utiliserais comme dans cette situation car il en résulte une seule vérification de type par opposition à deux. –
Notez que le code réellement généré pour 'if (someObject is MyClass)' est en fait 'if ((someObject as MyClass)! = Null)' –
N'utilisez pas ** both ** 'is' et le' (cast) 'syntaxe, vous encourez deux fois le coût de la vérification de type. Si vous avez déjà déterminé le type en utilisant 'is', il est parfaitement sûr de faire le cast en utilisant' as', et beaucoup plus rapidement car il peut contourner toutes les vérifications de conversion implicites. –