このコードは、簡略化すると次のようになります。
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; }
}
現在、3つの視点があります。
1)Clientプロパティは常に設定される必要があるため(つまりnullではない)、これは適切なコードでClient == nullあり、Id値0は偽のIDを示します(これはコードの作成者の意見です;-))
2)が0偽の値であることを呼び出し元に依存することはできません。Idまた、 Clientプロパティを常に設定する必要exceptionがあるget場合は、Clientプロパティがnullになったときにをスローする必要があります。
3)Clientプロパティを常に設定する必要がある場合は、プロパティがたまたまnullの場合に戻りClient.Id、コードにNullRef例外をスローさせClientます。
これらのうちどれが最も正しいですか?または、4つ目の可能性はありますか?