假设我有一个包含零个或多个球员的“团队”类。
球员类很简单:
选项三:
球员类很简单:
public class Player
{
public long Id { get; set; }
public string Name { get; set; }
public Team Team { get; set; }
}
但是如何最好地定义Team类呢?
选项1
public class Team
{
public long Id { get; set; }
public string Name { get; set; }
public ICollection<Player> Players { get; set; }
}
选项2:
public class Team
{
public Team()
{
Players = new Collection<Player>();
}
public long Id { get; set; }
public string Name { get; set; }
public ICollection<Player> Players { get; set; }
}
选项三:
public class Team
{
public long Id { get; set; }
public string Name { get; set; }
public IQueryable<Player> Players { get; set; }
}
选项 4:
public class Team
{
public long Id { get; set; }
public string Name { get; set; }
public ObjectSet<Player> Players { get; set; }
}
Players = new Collection<Player>()
而是使用Players = new List<Player>()
?(因为Collection<T>
主要是一个围绕着List<T>
的外观包装类,但具有IsReadOnly
检查。)至于选项2,那就是如果您使用默认的无参数构造函数创建一个new Team()
,在使用它之前没有设置任何属性。然后是的,集合会被初始化,但实际上,我想象不出我什么时候会这样做。(虽然这是处理C# 9中的可空引用类型的一种方式。) - JohnB