コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】明示的なインターフェイスの実装

概要

public interface IHoge
{
    void Hoge();
}

public class Hoge1 : IHoge
{
    // 通常の実装
    public void Hoge()
    {
    }
}

public class Hoge2 : IHoge
{
    // 明示的なインターフェイスの実装
    void IHoge.Hoge()
    {
    }
}

public class Program
{
    private static void Main()
    {
        var hoge1 = new Hoge1();
        hoge1.Hoge(); // OK

        var hoge2 = new Hoge2();
        hoge2.Hoge(); // コンパイルエラー

        var ihoge = ( IHoge ) hoge2;
        ihoge.Hoge(); // OK
    }
}
  • インターフェイスを実装したいが、外部からは隠したい場合は
    明示的なインターフェイスの実装が役に立つ
  • インターフェイスにキャストすれば外部から呼び出しはできる