我们有这段代码,经过简化,看起来像这样:
public class Room
{
public Client Client { get; set; }
public long ClientId
{
get
{
return Client == null ? 0 : Client.Id;
}
}
}
public class Client
{
public long Id { get; set; }
}
现在我们有三个观点。
1)这是很好的代码,因为Client应该始终设置该属性(即不为null),因此该值Client == null将永远不会发生,并且Id值始终0表示一个错误的Id(这是代码编写者的意见;-))
2)您不能依赖调用方来知道这0是一个错误值,Id并且 Client应始终设置该属性exception,而get当该Client属性恰巧为null 时,则应抛出in
3)当Client应始终设置该属性时,您只需返回Client.Id并NullRef在该Client属性碰巧为null 时让代码引发异常。
以下哪项最正确?还是有第四种可能性?