加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 具有“out”参数的类似TryXXX的方法与返回可空值类型?

发布时间:2020-12-15 21:52:59 所属栏目:百科 来源:网络整理
导读:我经常在C#中看到这样的方法:(做一个可能给出或不给出结果的计算) bool TrySomething(SomeType inputData,out SomeOtherType result) { ... } 为什么人们不使用这样的东西呢? NullableSomeOtherType TrySomething(SomeType inputData) { ... } 这只是性能差
我经常在C#中看到这样的方法:(做一个可能给出或不给出结果的计算)

bool TrySomething(SomeType inputData,out SomeOtherType result) { ... }

为什么人们不使用这样的东西呢?

Nullable<SomeOtherType> TrySomething(SomeType inputData) { ... }

这只是性能差异吗?
这是一个结构,所以必须没有堆分配,对吧?
或者我错过了什么?

解决方法

在C#2.0中引入了Nullable – 就像泛型一样.有很多代码早于此.

说实话,每当出现问题时,我都不会只是回归Nullable.

你通常拥有的是一种方法

SomeOtherType Something(SomeType inputData) { ... }

如果出现问题,将抛出异常.现在在某些情况下,您希望避免异常,因此有另一种方法:您给出的方式.

bool TrySomething(SomeType inputData,out SomeOtherType result) { ... }

但是,一个例外是错误的,一个布尔值不是.因此,如果它给你错误,你就会得到更多信息“它不起作用”.在某些情况下,这可能就足够了.我,我喜欢区分“我的集合不包含该值”错误来自“我目前正在耗尽内存并且不能再做任何事情”错误,或者其他任何错误.

现在引入Nullable作为返回值,它是 – 正如我所说的 – 德鲁伊知识知道接收null并不意味着“值为空”,而是“发生了一些错误”.这是你需要记录和解释的东西,而TryXXX方法的bool结果是不言自明的.

简而言之,通过使用Nullable作为返回值,您只会产生稍微混乱的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读