Évitez les appels de membres virtuels dans les constructeurs
Lorsque vous essayez d'appeler un membre virtuel du constructeur d'un objet, Resharper soulève un avertissement. Comprendre pourquoi cette pratique doit être évitée est crucial.
Processus de construction
En C #, la construction de la classe implique l'exécution d'initialiseurs de la classe la plus dérivée à la classe de base, suivie de l'exécution du constructeur à partir de base à la classe la plus dérivée.
Invocation de la méthode
Dans .NET, les objets héritent de leur tableau de méthode à partir du type le plus dérivé pendant la construction, permettant aux appels de méthode virtuels de cibler le type le plus dérivé.
Invocation de la méthode virtuelle dans les constructeurs
Si une méthode virtuelle est appelée dans un constructeur et que l'objet n'est pas le type le plus dérivé, la méthode virtuelle s'exécutera contre une classe avec des constructeurs non initialisés. Cela peut entraîner l'accès à un objet non initialisé, conduisant à des problèmes potentiels.
atténuation
Si la classe est marquée comme scellée, il garantit qu'il reste le type le plus dérivé . Dans de tels cas, les appels de méthode virtuelle des constructeurs sont sûrs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!