I'm learning C# and trying to do simple object oriented exercise.

I have three weapon classes, "Bow,dagger,Spear", so I made one interface and inherited from this interface IWeapon.

Now user must choose one of the weapon, so I want to make Collection of weapons and I'm trying to make list of IWeapons, is it correct way? Isn't it bad practice to make list type of IWeapon ? Because of, I know that Interfaces are like a contracts, and I think it's a bad idea to make List with Interface type. One way is to change interface to an abstract class, but I want to use Interface.

```
 private static List<IWeapon> weapons = new List<IWeapon>();

```

Is it correct way or not ?