There is no difference for your specific example, but it is very useful to create an instance against the variable Interface, since it helps in writing specific code that is independent of the instance.
for instance
interface IPizza {
public String Bake(); }
public class CountrySpecial: IPizza {
public String Bake()
{
} }
public class FarmHouse: IPizza {
public String Bake()
{
} }
public class Order {
public void PlaceOrder(IPizza pizza)
{
pizza.Bake();
} }
Now you can do amazing things, regardless of the specific initialization, for example:
class Program
{
static void Main()
{
Order ord = new Order();
ord.PlaceOrder(new CountrySpecial());
ord.PlaceOrder(new FarmHouse());
}
}
Using the above design, we can add as many types of pizza as we want, without even changing the code for ordering them!
In addition, although you asked in the context of .net, but this has nothing to do with the language, because it is a design issue;)
Hope this helps!