computer-science - 这个语句可以被视为类不变量吗?

标签 computer-science semantics design-by-contract invariants

这是一个高度笼统的想法,但让我们在此示例中使用 C#。

鉴于此

  • 我有一个一次性类Foo,它实现了IDisposable
  • Foo 有一个 bool 标志 disposedDispose 被调用之前它是 false ,之后它是 正确
  • Foo 的所有公共(public)方法在被调用时如果 disposedtrue 将抛出 ObjectDisposedException

这条语句是否

Any method of Foo, except Dispose, will throw an ObjectDisposedException when called on an instance of Foo that has been disposed.

描述Foo的不变量?

最佳答案

没有。

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

按契约(Contract)设计包括定义契约(Contract)的以下部分:

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

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

关于computer-science - 这个语句可以被视为类不变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350238/

相关文章:

c - 实证运行时分析

html - 是否可以创建 HTML quine?

html - 跨度的语义值

c# - 当使用 Contract.Assert(true) 并且该方法必须返回某些内容时该怎么办?

xml - WCF 契约(Contract)第一个 : No methods are exposed

上下文无关文法的算法

seo - 文档的 Schema.org 类型?

java - Java 中的数组语法 : what is the significance of the [] location

actionscript-3 - 通过actionscript的合约工具进行设计

java - 创建一个java程序来求解二次方程