Chúng ta có mã này, khi được đơn giản hóa, trông như thế này:
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; }
}
Bây giờ chúng tôi có ba quan điểm.
1) Đây là mã tốt vì thuộc Client
tính phải luôn được đặt (không phải là null) vì vậy Client == null
sẽ không bao giờ xảy ra và giá trị Id 0
biểu thị Id sai dù sao (đây là ý kiến của người viết mã ;-))
2) Bạn không thể dựa vào người gọi để biết đó 0
là giá trị sai Id
và khi Client
tài sản phải luôn được đặt, bạn nên ném exception
vào get
khi Client
tài sản xảy ra là null
3) Khi thuộc Client
tính phải luôn được đặt, bạn chỉ cần trả về Client.Id
và để mã ném NullRef
ngoại lệ khi thuộc Client
tính không có giá trị.
Điều nào là đúng nhất? Hay là có khả năng thứ tư?