自从.net 4.0引入了契约之后,我想知道微软是否把它传播到了他们所有的类中,比如BCL?
如果不是,那为什么?这种特性只有在标准库中默认支持时才有意义,对吧?

最佳答案

没有任何代码合同被添加到所有的BCL中。许多最常见的类都添加了注释,但整个bcl都没有。
这里的主要原因是时间。bcl是巨大的,为所有bcl添加正确的契约是一项巨大的任务。目前,结果只对.NET用户群的一小部分有利。如果合同越来越受欢迎,那么我相信它们在BCL中的使用也会增长(是的,我意识到不做一个会降低另一个的可能性)
不过,通过用户声明自定义协定程序集的能力,可以缓解此问题。这使得他们能够发布被遗漏的注释类型,并且从契约的角度来看,他们的代码基是干净的。

10-01 19:19