ReliabilityContractAttribute有什么作用?

Pra*_*ter 10 .net c# vb.net attributes

它是做任何事情还是仅用于文档.如果它仅用于文档,为什么文档不记录它?

例如,这两种静态方法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)
Run Code Online (Sandbox Code Playgroud)

他们生成的MSDN文档甚至没有提及CopyConstrainedCopy注释.

Jon*_*eet 10

我相信它们也被用于约束执行区域,因此CLR知道它可以安全地做什么.在CER中,您的代码无法执行某些操作,作为回报,CLR可以保证不会抛出某些带外异常.

MSDN有更多细节.