纯度背景下“可见”状态变化的含义是什么?

时间:2013-10-25 10:24:18

标签: .net reflection code-contracts portable-class-library

我有一个带有ReflectionHelper类的可移植类库,其中包含一组方便的方法来执行与反射相关的操作。

我将这些方法中的许多标记为纯粹的,但后来在另一个代码中,我注意到GetTypeInfo()本身并不纯粹的警告。我强调,对于新的反射api调用GetTypeInfo()会导致加载程序集,包含该程序集的类型和缺失会导致异常。

现在我对MSDN中PureAttribute文档的纯度定义感到困惑:

表示某种类型或方法是纯粹的,也就是说,它不会使任何可见状态发生变化

可以将哪些变化视为可见?装配加载属于这一类吗?

1 个答案:

答案 0 :(得分:1)

它基本上意味着以下内容:

如果不调用此方法,则此方法不应以不同方式更改程序的状态。

背景:
使用代码合同,您可以选择删除发布版本中的合同。但这显然不应该改变程序的行为。

你的方法在这方面是纯粹的。您可以删除此调用,但程序的结果不会更改。