Если вы хотите быть уверенными, что класс никогда не будет использован как базовый, при определении класса примените модификатор
sealed.
Единственное ограничение: абстрактный класс не может быть изолированным, так как в силу своей природы абстрактные классы предназначены для использования в качестве базовых. И еще. Хотя изолированные классы предназначены для предотвращения непреднамеренного создания производных классов, определение класса как изолированного позволяет выполнить оптимизацию периода выполнения. В частности, поскольку компилятор гарантирует отсутствие у класса любых производных классов, есть возможность преобразования виртуальных вызовов для изолированного класса в невиртуальные вызовы. Вот пример определения класса как изолированного:
using System;
sealed class MyPoint {
this.x = x; this.у = у; }
private int X; public int x {
get
{
return this.X;
} set
<
this.X = value;
} }
private int Y; / public int у /
get {
return this.Y;
}
set
{
this.Y = value; } } >
class SealedApp {
public static void Main() {
MyPoint pt = new MyPoint(6,16);
Console.WriteLine("x = {0}, у = {1}", pt.x, pt.y); } }
Я использовал модификатор доступа
private
для внутренних членов классами
Y.
В результате применения модификатора
protected
компилятор выдаст предупреждение, так как защищенные члены видимы производным классам, а, как вам известно, у изолированных производных классов нет.