why icollection is use with virtual keyword in csharp

Code Example - why icollection is use with virtual keyword in csharp

                
                        It allows the Entity Framework to create a proxy around the virtual property so that the property can support lazy loading and more efficient change tracking.