我正在为游戏创建一个开发控制台,并希望从控制台输入添加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设置为自身?
答案 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;
}