2013-12-06 1 views
-1

Мне не удалось найти убедительный ответ, что было точной разницей между объявлением объекта как класса или интерфейса.Разница при объявлении объектов с классом или интерфейсом C#

Что будет разница между обоими кодом ниже

ILogger log = new MyLogger(); //ILogger is an interface and MyLogger class implements ILogger 

и

MyLogger log = new MyLogger(); 

Как бы создать объект типа MyLogger то, что разница между двумя выше.

+1

Прочтите http://dotnet.dzone.com/articles/c-interfaces-what-are-they- и здесь короткое объяснение. Но, пожалуйста, сделайте какое-либо исследование, прежде чем задавать вопросы. – wudzik

+0

Я бы сказал, что в основном строка 'ILogger log = new MyLogger();' ожидает, что журнал будет иметь тип, который реализует вещи из интерфейса ILogger и строки MyLogger log = new MyLogger(); 'ожидает, что журнал будет иметь' MyLogger'. – Tafari

ответ

1

Нет, разница, если вы думаете, с точки зрения создания объекта, но если вы объявить как

ILogger log = new MyLogger(); 

тогда вы сможете получить доступ только те функции, свойства напрямую, без добавления cast, которые объявлены в интерфейсе ILogger но с другой стороны с декларацией

MyLogger log = new MyLogger(); 

вы сможете получить доступ ко всем функциям и свойствам класса MyLogger, а также интерфейс ILogger как класс реализует интерфейс ILogger

Смежные вопросы