变量赋值的最佳实践

时间:2013-11-25 16:10:40

标签: c# constructor game-engine

我正在为游戏创建一个开发控制台,并希望从控制台输入添加Json反序列化,以便我可以随意向世界添加实体。

我很好奇这个代码示例是不是很糟糕。我只是检查属性是否为null。如果它为null,我将其设置为参数,否则将其设置为自身。是否有任何可能导致严重问题的情况?

public class Entity
{
  public Entity(int id, float health, Vector3 location)
  {
    Init(id, health, location);
  }
  public void Init(int id, float health, Vector3 location)
  {
    Id = id;
    Health = health;
    Location = Location ?? location;
  }
  public int Id { get; set; }
  public float Health { get; set; }
  public Vector3 Location { get; set; }
}

另外,有没有办法在一行中做这样的事情?

Location = ?? location;

因此,当它不为空时,它不必将Location设置为自身?

1 个答案:

答案 0 :(得分:2)

好吧,在构造函数中,这不是必需的,因为Location在执行代码时将始终为null(或default(Vector3))。所以你可以写:

public Entity(int id, float health, Vector3 location)
{
  Id = id;
  Health = health;
  Location = location;
}

在执行代码时未知Location的值的其他情况下,这足够短:

Location = Location ?? location;

但就个人而言,我更喜欢大多数时候使用更明确的语法:

if (Location == null)
{
    Location = location;
}