0

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

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

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

表示一个类型或方法是纯的,也就是说,它不会进行任何可见的状态更改

什么变化可以称为可见的?装配加载是否属于此类别?

4

1 回答 1

1

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

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

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

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

于 2013-10-25T10:37:32.597 回答