我们有这段代码,经过简化,看起来像这样:
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 时让代码引发异常。
以下哪项最正确?还是有第四种可能性?