I want to know the difference between those two codes can't understand what should I initialize the property in the constructor: Code 1:
public class Student
{
    public Student() 
    {
        this.Courses = new HashSet<Course>();
    }
    public int StudentId { get; set; }
    [Required]
    public string StudentName { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
    public Course()
    {
        this.Students = new HashSet<Student>();
    }
    public int CourseId { get; set; }
    public string CourseName { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}
code2:
public class Student
{  
    public int StudentId { get; set; }
    [Required]
    public string StudentName { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}
can anyone help me to understand the meaning of the difference for those two codes , thanks