Technically, there is little to no difference, you would need to instantiate both these variables. However, by defining var1 as an interface type, you have left the actual definition open for later, giving additional flexibility. Based on some options, you could switch between different types at runtime when using an IList. For e.g.
if (flag)
{
var1 = new List();
}
else
{
var 1 = new MyOwnList(); //a custom implementation of the IList interface.
}
Build your own survey - http://www.factile.net