【发布时间】:2012-11-09 12:46:48
【问题描述】:
有没有办法使用代码契约来确保/检查方法不会更改对象的任何成员,类似于 C++ const 方法或将所有成员设置为 readonly?
即比以下更简单的方法:
Contract.Ensures(this.member1 == Contract.OldValue(this.member1));
Contract.Ensures(this.member2 == Contract.OldValue(this.member2));
Contract.Ensures(this.member3 == Contract.OldValue(this.member3));
Contract.Ensures(this.member4 == Contract.OldValue(this.member4));
Contract.Ensures(this.member5 == Contract.OldValue(this.member5));
或同样使用Contract.EnsuresOnThrow。
【问题讨论】:
-
@Sjoerd 我不认为这是重复的,因为这里的 Op 专门询问是否可以使用代码合同来完成。
-
@Sjoerd:我不是在问语言/编译器是否可以执行此检查,我知道它不能。我在问代码合同静态/运行时检查是否可以做到这一点。
标签: c# .net code-contracts