有沒有使用代碼合同來確保/檢查方法是否不會更改對象的任何成員的方法,類似於C++ const
方法或將所有成員設置爲readonly
?確保對象不變?
即比以下更簡單的方法:使用Contract.EnsuresOnThrow
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));
或相同。
可能重複的[C#:可以參數是不變的?](http://stackoverflow.com/questions/2339074/c-can-parameters-be-constant) – Sjoerd
@Sjoerd我不認爲這是重複的,因爲這裏的操作是要求具體是否可以通過代碼合同完成。 – McGarnagle
@Sjoerd:我不是問語言/編譯器是否可以執行這個檢查,我知道它不能。我問的是代碼合同靜態/運行時檢查可以做到這一點。 – ronag