2011-01-13 5 views
2

В процессе обучения использовать LINQ в VB.NET, я наткнулся на следующее:IEnumerable интерфейс как тип?

Dim x As IEnumerable = (some LINQ query) 

Если вы не можете создать экземпляр интерфейса, а только конкретная реализация этого, почему это разрешено? Есть ли разница между выполнением Dim x as (Тип) и Dim x as New (Тип)?

ответ

3

Да, большая разница. В коде, который вы даете, вы объявляете переменную, которая укажет на какую-то конкретную вещь. Он не обязательно знает, что это такое, но он знает, что он реализует IEnumerable. В коде, который вы указали, фактический экземпляр как некоторый конкретный тип (который реализует IEnumerable) обрабатывается LINQ. Часть, которая идет по праву, должна привести к конкретному установлению.

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