Comment le CPG élimine-t-il les objets créés dans les 2 scénarios suivants?Mise au rebut d'objets
1)
Private Function DoSomething() As Boolean
Return New DatabaseManager().Insert()
End Function
2)
Private Function DoSomething() As Boolean
Dim mngr As New DatabaseManager()
Return mngr.Insert()
End Function
Dans l'option 1, je ne crée pas la variable locale pour maintenir la référence de l'objet. Dans l'option 2, je tiens la référence dans la variable locale.
Quelle option est la meilleure et pourquoi? (Le cas échéant)
Il est tout à fait possible, au niveau IL, de créer un objet sans le stocker dans une variable locale. L'objet est renvoyé sur la pile, donc si vous ne l'utilisez qu'une fois, rien n'empêche un compilateur de supprimer les inutiles 'stloc.0' et' ldloc.0'. – cHao
@cHao, très bonne remarque, point pris. Je vais mettre à jour mon message. –