求两个可为空值的最小值 c#

qiuqingpo 2019-01-30 10:57:07
eg.

decamil? a=5;
decamil? b;

上面只是一种情况,有没有好的算法?谢谢
...全文
618 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2019-02-12
  • 打赏
  • 举报
回复
所以,如果说让我们强行给个规则,那我们只能采用微软的标准规则,因为这样不会出现js的奇异特性,起码俺们都是一样的标准


微软默认的比较方式
decamil? a=5;
decamil? b;
int i=Nullable.Compare(a,b);
// i小于0,a<b
//i=0 ,a=b
//i>0,a>b
wanghui0380 2019-02-12
  • 打赏
  • 举报
回复
也就是说,俺们的代码起码要符合俺们普通人思维方式,最起码他得符合加法交换律才是个标准

js那种混乱技巧实在比较吐血
wanghui0380 2019-02-12
  • 打赏
  • 举报
回复
不建议如此,比如js混乱就是典型

NaN+5 和 5+NaN到底都是啥,一样不一样??写代码都能写出精怪来
SoulRed 2019-02-12
  • 打赏
  • 举报
回复
int32.minvalue
巴士上的邂逅 2019-01-31
  • 打赏
  • 举报
回复
引用 5 楼 大然然 的回复:
另外,即便为null的decimal赋一个默认值,你赋为0,只是你个人的一个判断和决定,那我反问你为什么不赋为 -1 呢? 凭什么你一定要用0来做默认值,如果我觉得应该用 -1呢?
我只是举个例子,只是告诉给他说有GetValueOrDefault这个方法可以使用,默认值是多少要根据他的业务需求来填。可空类型和普通值类型比大小本来就是一个和牵强的需求
巴士上的邂逅 2019-01-30
  • 打赏
  • 举报
回复
 Math.Min(a.GetValueOrDefault(0), b.GetValueOrDefault(0));
wwangpping99 2019-01-30
  • 打赏
  • 举报
回复
只有两个参数都不是NULL时才可以比较吧,或者是按上面说的指定NULL时的默认值,然后进行比较。
大然然 2019-01-30
  • 打赏
  • 举报
回复
另外,即便为null的decimal赋一个默认值,你赋为0,只是你个人的一个判断和决定,那我反问你为什么不赋为 -1 呢? 凭什么你一定要用0来做默认值,如果我觉得应该用 -1呢?
大然然 2019-01-30
  • 打赏
  • 举报
回复
引用 1 楼 巴士上的邂逅 的回复:
 Math.Min(a.GetValueOrDefault(0), b.GetValueOrDefault(0));


你这个思路不严谨,a有值 b为null, 那么最小值应该是a,因为B没有值不应该参加比较,
你把null赋值为0, 那么从流程上来讲,我怎么知道b是null后赋为0,还是本来就有值,为0 ???
xuzuning 2019-01-30
  • 打赏
  • 举报
回复
果然吗? 那么 0 和 null 谁大呢?
qiuqingpo 2019-01-30
  • 打赏
  • 举报
回复
引用 1 楼 巴士上的邂逅 的回复:
 Math.Min(a.GetValueOrDefault(0), b.GetValueOrDefault(0));
这果然是个好方法,还有没有别的了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧