它是否可以执行任何操作,或仅用于文档。如果它仅用于文档,为什么文档没有记录它?
例如,这两个System.Array
的静态方法:
[ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]
public static void Copy(Array sourceArray, Array destinationArray, int length)
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length)
他们生成的MSDN文档甚至没有提到注释Copy
或ConstrainedCopy
。
答案 0 :(得分:10)
我相信它们也被用于约束执行区域,因此CLR知道它可以安全地做什么。您的代码在CER中无法做某些事情,作为回报,CLR保证不会抛出某些带外异常。
MSDN有更多细节。
答案 1 :(得分:3)
来自MSDN:
ReliabilityContractAttribute 属性为您提供了一种机制 记录您的代码,并表明 什么类型的可靠性保证 你可以面对 可能的特殊情况 可能导致不一致 州。在这方面,特殊 条件定义为异步 可以生成的异常 用共同语言运行时间 运行时,例如中止的线程, 内存不足的情况和堆栈 溢出。你可以申请 ReliabilityContractAttribute属性 装配,类型和方法。
将此属性与。一起使用 用于定义a的一致性枚举 通过记录可靠性合同 一个人的可靠性水平 特别的代码。