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 == null
asla gerçekleşmez ve Kimlik değeri 0
yine de yanlış bir kimliği gösterir (bu kodun yazarının görüşüdür ;-))
2) Bunu bilmen arayanın güvenemez 0
yanlış değeridir Id
ve ne zaman Client
özelliği her zaman ayarlanmalıdır Bir atarsam exception
içinde get
iken Client
özelliği null olur
3) Client
Özelliğin her zaman ayarlanması gerektiğinde, yalnızca döndürür Client.Id
ve özellik boş NullRef
olduğunda kodun bir istisna atmasına izin verirsiniz Client
.
Bunlardan hangisi en doğru? Yoksa dördüncü bir ihtimal var mı?