Робота методу віртуальним загалом сповільнює будь-який код, який повинен його викликати. Це уповільнення буде незначним, але в деяких випадках може бути досить великим (серед іншого тому, що виклики невіртуальних методів можуть бути вбудовані, що, в свою чергу, може дозволити оптимізатору усунути непотрібні операції). Не завжди можливо передбачити, наскільки віртуальні дзвінки можуть вплинути на швидкість виконання, і, як правило, слід відмовлятися робити те, що робить код повільнішим, за винятком випадків, коли для цього є помітна вигода.
Перевага продуктивності від того, щоб зробити методи невіртуальними, напевно, достатня для того, щоб виправдати наявність методів невіртуальними за замовчуванням, але коли класи призначені для успадкування, більшість методів повинні бути віртуальними та незапечатаними; основне використання для невіртуальних або герметичних методів повинно бути обгортками для інших (можливо, захищених) віртуальних методів (код, який хоче змінити основну поведінку, повинен замінити відповідний віртуальний, а не обгортковий).
Часто існують причини, не пов'язані з продуктивністю, для позначення класів як sealed
або обмеження успадкування іншими класами в складі. Крім усього іншого, якщо клас успадковується зовні, усі члени protected
області дії ефективно додаються до його загальнодоступного API, і будь-які зміни в їх поведінці в базовому класі можуть порушити будь-які похідні класи, які покладаються на цю поведінку. З іншого боку, якщо клас успадковується, створення його методів virtual
насправді не збільшує його вплив. У будь-якому випадку, це може зменшити залежність похідного класу від внутрішніх елементів базового класу, дозволяючи їм повністю "поховати" аспекти реалізації базового класу, які більше не актуальні в похідному класі [наприклад, якщо члениList<T>
були віртуальними, похідний клас, який замінив їх усі, міг використовувати масив масивів для зберігання речей (уникаючи проблем з великою купою об’єктів), і не довелося б намагатися зберегти приватний масив, що використовується List<T>
відповідно до масиву-of- масиви.