c#8.0 インターフェース

C#8.0からインターフェースにメソッドを実装できるようになりました。
これまで、実装する場合には、抽象クラスが必要でしたが、インターフェースにも実装できることで、多重継承しながら、インターフェースで実装されたメソッドを呼び出すこともできるようになりました。
また、インターフェースにメソッドの実装を記述しておくと、派生側で実装しなくてもエラーにならなくなります。

using System;

namespace CSharp8._0Sample
{
    interface IMove
    {
        void MoveRight();

        void MoveLeft()
        {
            Console.WriteLine("default");
        }
    }

    // MoveRight()メソッドを実装していたいため、エラー
    // MoveLeft()メソッドは実装されていなくてもエラーにならない(c#8.0〜)
    class Player : IMove
    {
        public void MoveLeft()
        {
            Console.WriteLine("Move Left");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IMove playerMover = new Player();
            playerMover.MoveLeft();
        }
    }
}

C#

Posted by hidepon