我正在经历一个关于SO的问题,关于new features of c# 4.0和jon双向飞碟的答案有C#4.0的Code Contracts功能..但我真的不明白何时使用它们..任何建议......
答案 0 :(得分:25)
尽可能。例如,在
之类的方法开头使用guard子句的任何地方public void Write(TextWriter tw, object o) {
if(tw == null) {
throw new ArgumentNullException("tw");
}
if(o == null) {
throw new ArgumentNullException("o");
}
tw.WriteLine(o.ToString());
}
你应该改为使用
public void Write(TextWriter tw, object o) {
Contract.Requires(tw != null);
Contract.Requires(o != null);
tw.WriteLine(o.ToString());
}
Contract
的美妙之处在于它们是公开的,并且可以成为文档的一部分,而不需要额外的工作,因为保护条款不公开,只能放入文档中。吊装。因此,使用Contract
,您可以更清楚地表达代码中的要求和承诺。
答案 1 :(得分:5)
合同的真正美妙之处在于你不必硬连接那些丑陋的参数名字串......
if(tw == null) throw new ArgumentNullException("tw");