Sadeleştirildiğinde şöyle görünen bu koda sahibiz:
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; }
}
Şimdi üç bakış açımız var.
1) Bu özellik iyi koddur, çünkü Clientözellik her zaman ayarlanmalıdır (yani null değil), bu yüzden Client == nullasla gerçekleşmez ve Kimlik değeri 0yine de yanlış bir kimliği gösterir (bu kodun yazarının görüşüdür ;-))
2) Bunu bilmen arayanın güvenemez 0yanlış değeridir Idve ne zaman Clientözelliği her zaman ayarlanmalıdır Bir atarsam exceptioniçinde getiken Clientözelliği null olur
3) ClientÖzelliğin her zaman ayarlanması gerektiğinde, yalnızca döndürür Client.Idve özellik boş NullRefolduğunda kodun bir istisna atmasına izin verirsiniz Client.
Bunlardan hangisi en doğru? Yoksa dördüncü bir ihtimal var mı?