当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中显示方法永远不会返回null(按合同设计)

如何解决《如何在C#中显示方法永远不会返回null(按合同设计)》经验,为你挑选了2个好方法。

我有一个永远不会返回null对象的方法.我想说清楚,以便我的API用户不必编写如下代码:

if(Getxyz() != null)
{
  // do stuff
}

我该如何展示这个意图?



1> Oliver Halla..:

不可思议的是,C#没有办法内置

您可以记录此事实,但不会自动检查.

如果您正在使用resharper,那么可以将其设置为在方法标记为[NotNull]属性时正确检查.

否则,您可以使用Microsoft Contracts库并在您的方法中添加类似于以下内容的内容,但对于这样一个简单的注释,这是非常多的额外措辞.

Contract.Ensures(Contract.Result() != null)

Spec#通过允许一个解决了这个问题!在类型之后将其标记为非null类型,例如

string! foo

但Spec#只能用于定位.NET2,并且已被Code Contracts库篡夺.


如果要返回非空字符串,则使用结构无效.你可以返回一个包含可能为null的字符串的非null结构,但是如何更好?

2> Jason Jackso..:

除非你使用的是基于System.ValueType的类型,否则我认为你运气不好.最好在函数的XML /元数据注释中清楚地记录这一点.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有