マッピィ Techlog

日々思うこと

【C#】interfaceとは

普段は意識しない interface ですが、理解を深めるためにまとめました。

interface の利点ですが、機能を強制することです。(そしてユーザには保証します)
色々なinterfaceがありますが、例として IDisposable を挙げます。

VisualStudioで定義を見るとこんな感じになってます(一部省略)

public interface IDisposable
{
   void Dispose();
}

これを実装すると

static void Main(string[] args)
{
   var obj = new ClassA();

   Console.WriteLine("Main finished.");
   Console.ReadLine(); // 入力待ち
}

class ClassA : IDisposable
{
   public ClassA()
   {
      Console.WriteLine("ClassA constructor");
   }

   public void Dispose()
   {
      Console.WriteLine("ClassA Dispose");
   }
}

となりますが、public void Dispose()を省略するとエラーになります。
そのため「機能を強制する」ことになります。

ただし、これは「使用を強制する」ものではありません。
上記もそうですが、Dispose() は使用していません。

このように IDisposable については、最後にリソースを開放するべきクラスなどに使用することができます。
他の主要な interface としては、IComparableやIEnumerableなどが有名です。