Зачем реализовывать интерфейс явно? - PullRequest
118 голосов
/ 05 ноября 2010

Итак, что же является хорошим вариантом использования для явной реализации интерфейса?

Только чтобы люди, использующие класс, не смотрели на все эти методы / свойства в intellisense?

Ответы [ 11 ]

0 голосов
/ 11 октября 2016

Вот как мы можем создать явный интерфейс: Если у нас 2 интерфейса, и оба интерфейса имеют один и тот же метод, и один класс наследует эти 2 интерфейса, поэтому, когда мы вызываем один интерфейсный метод, компилятор запутывается, какой метод вызывать, поэтому мы можем справиться с этой проблемой, используя Explicit Interface. Вот один пример, который я привел ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace oops3
{
    interface I5
    {
        void getdata();    
    }
    interface I6
    {
        void getdata();    
    }

    class MyClass:I5,I6
    {
        void I5.getdata()
        {
           Console.WriteLine("I5 getdata called");
        }
        void I6.getdata()
        {
            Console.WriteLine("I6 getdata called");
        }
        static void Main(string[] args)
        {
            MyClass obj = new MyClass();
            ((I5)obj).getdata();                     

            Console.ReadLine();    
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...