【C#】sealed キーワード ~ 継承禁止 / パフォーマンス向上 ~

【1】sealed キーワード

* 「sealed(シールド)」は「封印された」って意味
* sealedクラスは継承不可
 => Java でいう final
 => 継承しようとするとコンパイルエラー
 => 拡張を他者にしてほしくない場合は sealed キーワードを付けるべき

http://msdn.microsoft.com/ja-jp/library/ff647790.aspx#scalenetchapt05_topic7

の「クラス設計に関する考慮事項」より抜粋

* sealed キーワードの使用を検討する
  シールされた仮想メソッドは、インライン化など、コンパイラ最適化の対象となるので
  (若干の?)パフォーマンス向上に期待できる

 => どうせなら、デフォルトは、sealedキーワードを付加させればいいのに。

チェックリスト

ちなみに、チェックリストもあるみたい。

http://msdn.microsoft.com/ja-jp/library/ff647717.aspx

【2】サンプル

public sealed class SampleClass
{
    // Class members here.
}

public class DemoClass : BaseClass
{
    public sealed override void DoSomething() { }
}

参考文献

https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members