コード コントラクトを使用するコードをコンパイルすると、理解できない非常に奇妙なエラーが発生します。
[ContractInvariantMethod]
private void ObjectInvariant()
{
Contract.Invariant(
this.isSubsidiary ||
this.parentCompanyId == default(Guid));
}
次のエラーで失敗します。
不正な契約。メソッド '<ProjectName>.ObjectInvariant' での代入後に不変が見つかりました。
コードが次のように変更された場合:
[ContractInvariantMethod]
private void ObjectInvariant()
{
Contract.Invariant(
this.isSubsidiary ||
this.parentCompanyId == Guid.Empty);
// Noticed the Guid.Empty instead of default(Guid)?
}
それはうまくコンパイルされます。
私の何が問題なのdefault(Guid)
ですか?