Nous avons ce code qui, une fois simplifié, ressemble à ceci:
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; }
}
Nous avons maintenant trois points de vue.
1) Il s'agit d'un bon code car la Clientpropriété doit toujours être définie (c'est-à-dire non nulle), de sorte que la valeur Client == nullne se produira jamais et que la valeur Id 0indique un faux Id de toute façon (c'est l'opinion de l'auteur du code ;-))
2) Vous ne pouvez pas compter sur l'appelant pour savoir qu'il 0s'agit d'une valeur fausse Idet lorsque la Clientpropriété doit toujours être définie, vous devez jeter un exceptiondans la getlorsque la Clientpropriété se trouve être nulle.
3) Lorsque la Clientpropriété doit toujours être définie, il vous suffit de revenir Client.Idet de laisser le code lever une NullRefexception lorsque la Clientpropriété est nulle.
Laquelle de ces réponses est la plus correcte? Ou existe-t-il une quatrième possibilité?