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 Clienttính phải luôn được đặt (không phải là null) vì vậy Client == nullsẽ không bao giờ xảy ra và giá trị Id 0biể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 đó 0là giá trị sai Idvà khi Clienttài sản phải luôn được đặt, bạn nên ném exceptionvào getkhi Clienttài sản xảy ra là null
3) Khi thuộc Clienttính phải luôn được đặt, bạn chỉ cần trả về Client.Idvà để mã ném NullRefngoại lệ khi thuộc Clienttính không có giá trị.
Điều nào là đúng nhất? Hay là có khả năng thứ tư?