我有一个永远不会返回null对象的方法.我想说清楚,以便我的API用户不必编写如下代码:
if(Getxyz() != null) { // do stuff }
我该如何展示这个意图?
不可思议的是,C#没有办法内置
您可以记录此事实,但不会自动检查.
如果您正在使用resharper,那么可以将其设置为在方法标记为[NotNull]属性时正确检查.
否则,您可以使用Microsoft Contracts库并在您的方法中添加类似于以下内容的内容,但对于这样一个简单的注释,这是非常多的额外措辞.
Contract.Ensures(Contract.Result() != null)
Spec#通过允许一个解决了这个问题!在类型之后将其标记为非null类型,例如
string! foo
但Spec#只能用于定位.NET2,并且已被Code Contracts库篡夺.
除非你使用的是基于System.ValueType的类型,否则我认为你运气不好.最好在函数的XML /元数据注释中清楚地记录这一点.