うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【C#】interface を private で定義する

interface を利用したクラスでは基本的に public で定義する必要がある

f:id:hacchi_man:20201128012715p:plain:w200

public class SampleRandom : MonoBehaviour
{
    private void Start()
    {
        var t = new Test();
        t.Test1();
    }

    private interface ITest1
    {
        void Test1();
    }

    private class Test : ITest1
    {
        public void Test1()
        {
            Debug.Log("Test1");
        }
    }
}

しかし、interface を利用した場合でのみ機能を提供したい場合に public では困ってしまう

そのために、下記の書き方ができるようになっている

void ITest1.Test1()

こうすることで、interface 経由でのみ呼び出すことが可能になる

f:id:hacchi_man:20201128021031p:plain

public class SampleRandom : MonoBehaviour
{
    private void Start()
    {
        var t = new Test();
        var i = t as ITest1;
        i.Test1();
    }

    private interface ITest1
    {
        void Test1();
    }

    private class Test : ITest1, ITest2
    {
        void ITest1.Test1()
        {
            Debug.Log("Test1");
        }
    }
}