3

这是一个非常普遍的想法,但让我们在此示例中使用 C#。

鉴于

  • 我有一个一次性类Foo它实现IDisposable
  • Foo有一个布尔标志disposed,在被调用之前为Dispose,之后为
  • Foothrows的所有公共方法在调用时ObjectDisposedException如果disposed

有没有这个说法

的任何方法Foo,除了,将在已释放的实例上调用时Dispose抛出一个。ObjectDisposedExceptionFoo

描述一个不变量Foo?

4

2 回答 2

2

不。

这是类的所有方法共有的一组规则。不变量不是方法的规则。

按合同设计包括定义合同的以下部分:

  • 方法前提条件
  • 方法后置条件
  • 类不变

您所描述的是方法后置条件。它们属于每个函数的契约(当然是类契约的一部分),但不属于类不变量。

于 2012-01-05T10:06:12.127 回答
0

它不是一个不变量。这是关于对象状态的声明。IMO,您所描述的是处置方法的后置条件和所有方法的后置条件。

于 2012-07-05T09:03:27.473 回答