У меня есть кое-что в Интернете, кое-что здесь, и объяснение, которое имело для меня наибольший смысл, было следующее: Как я узнаю, когда создавать интерфейс? ?.
И вот у меня вопрос. Я вообще не ожидаю какого-то волшебного объяснения интерфейсов, потому что я прочитал достаточно, чтобы понять, что такого понятия не существует. Я надеюсь, что с опытом и программированием более глубокое понимание придет само собой, поэтому я решил попробовать пример, указанный как преимущество использования интерфейсов из принятого ответа по ссылке. Я тоже скопирую и вставлю это сюда:
у вас есть a, b, c, d 4 разных типов. во всем вашем коде есть что-то вроде:
Код: Выделить всё
a.Process();
b.Process();
c.Process();
d.Process();
Код: Выделить всё
List list;
foreach(IProcessable p in list)
p.Process();
Проблема в том, что, похоже, у меня этого нет. Прочитав его, я открываю свою Visual Studio 2010 и пытаюсь воссоздать пример следующим образом: я создал проект и создал четыре класса — a, b, c, d. Все эти классы одинаковы:
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class a : ITest
{
public void Test()
{
System.Console.WriteLine("Hi from a");
}
}
}
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
interface ITest
{
public void Test();
}
}
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
List list;
static void Main(string[] args)
{
foreach (ITest p in list)
p.Test();
}
}
}
Для нестатического поля, метода или свойства требуется ссылка на объект
em>
Ну, может кто-нибудь понизить мне уровень и объяснить мне на этом примере, какую именно выгоду я получаю, используя интерфейс.
Подробнее здесь: https://stackoverflow.com/questions/150 ... erspective
Мобильная версия