我理解PureAttribute
用于标记某些内容(类,方法,委托等),因为没有可见的更改,但我可以从以下定义中看到它可以应用于方法参数:< / p>
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Constructor|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Event|AttributeTargets.Parameter|AttributeTargets.Delegate, AllowMultiple = false, Inherited = true)]
public sealed class PureAttribute : Attribute
此属性应用于参数的目的是什么,如下所示:
public void SomeMethod([Pure]SomeClass theParameter)
{
}
这是否意味着SomeMethod
不应使用theParameter
上未标记为[Pure]
的任何内容,这意味着我们可以确保SomeClass
的实例在以前看起来相同并在调用SomeMethod
?
我没有看到以这种方式使用的PureAttribute
,并且想知道这是因为代码合同中缺乏支持还是因为对我的误解?
答案 0 :(得分:2)
如您所述,PureAttribute
表示类型或方法是纯粹的,即它不会进行任何可见的状态更改(直接来自MSDN文章)。
也许您的SomeClass
未标记为纯,因为可以更改状态,但这并不意味着其中的所有内容都是不纯的。
也许你的SomeMethod
不使用任何SomeClass
不纯的方法,也许它只是读取它的属性(我假设你没有在属性获取者中执行不纯的动作,否则你就是邪恶),所以SomeClass
的使用是纯粹的。