インタフェース (抽象型)
C#のインタフェースは、概ねJava同様であり、暗黙的にpublicな抽象メソッド、抽象プロパティ、抽象インデクサのみを持つことが許される参照型である。C# 7.xまでは、定数、入れ子になった型、静的フィールドや静的メソッドなどの定義は許されなかったが、C# 8.0以降では定義できるようになった。また、C# 8.0ではメンバーのデフォルト実装を定義することもできるようになった。インタフェース名はIで始めることが推奨されている。言語の機能や設計の観点から言うと、C#のインタフェースにはDelphi (Object Pascal) のインタフェースの影響が強く見られる。
C#の構造体は抽象クラスSystem.ValueTypeから暗黙的に派生する値型であり、基底クラスを明示的に指定することはできないが、任意のインタフェースを実装することはできる。C#の列挙型は抽象クラスSystem.