我有一个带有ReflectionHelper类的可移植类库,其中包含一组方便的方法来执行与反射相关的操作。
我将这些方法中的许多标记为纯粹的,但后来在另一个代码中,我注意到GetTypeInfo()
本身并不纯粹的警告。我强调,对于新的反射api调用GetTypeInfo()
会导致加载程序集,包含该程序集的类型和缺失会导致异常。
现在我对MSDN中PureAttribute文档的纯度定义感到困惑:
表示某种类型或方法是纯粹的,也就是说,它不会使任何可见状态发生变化。
可以将哪些变化视为可见?装配加载属于这一类吗?
答案 0 :(得分:1)
它基本上意味着以下内容:
如果不调用此方法,则此方法不应以不同方式更改程序的状态。
背景:
使用代码合同,您可以选择删除发布版本中的合同。但这显然不应该改变程序的行为。
你的方法在这方面是纯粹的。您可以删除此调用,但程序的结果不会更改。