[心得] 真的很讨厌null

楼主: wind681201 (阿风~~)   2017-05-05 22:54:45
null这个东西,真的是很讨厌,虽然它叫做连空白也没有。
但,没有就没有,干麻报错。
举个例来说:
我有一个 class 叫person ,里面有人名,年纪二个字段
若我查询 人名叫josn 的就怎样怎样。
假设这个person是null
if(person.name == "josn"){怎样。}
就错,为什么不直接跳过去就好,因为我只是判别呀。
而非要写成
if(person != null && person.name == "josn"){怎样。}
就这样,就要多几个字,很讨厌
由上面的例子,person 是null 那在person.name 当然就不可能为josn,就
跳过去就好,干麻要报错。
由其是dictionary物件,为了安全,非要一个containskey,先看有没有再处理。
作者: yeo1987 (Archie)   2017-05-05 23:01:00
可改用person?.name == "json" / Dictionary.TryGetValuejosn, 打错=.=
楼主: wind681201 (阿风~~)   2017-05-05 23:09:00
若person是null,name也是null的话,就没办法了吧tryGetValue,是好一点,但还是不能直接用就是还是要多一层判别
作者: vi000246 (Vi)   2017-05-06 00:03:00
https://goo.gl/s2pXbR原来一楼有贴了不然就用try{...} catch(){} 略过exception就好
作者: e23882 (呆呆要不要买降有)   2017-05-06 01:45:00
NullReferenceException
作者: ssas1115577 (Holey)   2017-05-06 02:31:00
逻辑问题,就像是我想透过看我钱包这个动作来看我还有多少钱,但其实我根本没有钱包
作者: IKAFIRE (没有)   2017-05-06 11:22:00
拜托不要用try catch做这种简单的判断
作者: james732 (好人超)   2017-05-06 11:46:00
同一楼,用?应该可以简化
作者: skitty (aki)   2017-05-06 21:59:00
.ToString
作者: testPtt (测试)   2017-05-07 00:23:00
那你就不要让他null不就好了
作者: jizang (阿鲁米)   2017-05-07 00:42:00
宣告马上给初始值。
作者: ssccg (23)   2017-05-07 02:59:00
没有值就是null,不是什么东西都适合有初始值是说 ?. 已经很方便了啊
作者: bizer (bizer)   2017-05-07 04:39:00
没有人又怎会有名子,写程式本来最好就严谨点,bug才比较少
作者: vi000246 (Vi)   2017-05-07 10:55:00
查到一个GetValueOrDefault()可以试试
作者: jizang (阿鲁米)   2017-05-07 11:22:00
给初始值 String.Empty 是一种习惯!编译器都会给警告~
楼主: wind681201 (阿风~~)   2017-05-07 17:49:00
其实理论我懂,只是觉得null 不等于json干麻要报错
作者: vi000246 (Vi)   2017-05-07 19:32:00
不然写个扩充方法好了http://imgur.com/JIbNeXk只是正确的解法应该是呼叫前就要判断null
楼主: wind681201 (阿风~~)   2017-05-07 20:36:00
谢谢~~~
作者: Litfal (Litfal)   2017-05-07 20:54:00
3F在说什么...name也是null又怎样?
作者: uranusjr (←這人是超級笨蛋)   2017-05-08 02:30:00
请爱用 null object pattern, 或改写 Objective-C
作者: soheadsome (师大狗鼻哥)   2017-05-08 18:16:00
用optional啊
作者: s4300026 (s4300026)   2017-05-08 18:37:00
只有我喜欢null吗? 我一直困扰著没有任何东西代表没有东西,就像是-1与1之间的 “没有”般的喜爱,与其自己定义,倒不如有个固定的东西可以指派。 举例来说,如果你要求输入自然数为变量,你可能会在意没有输入值的情况,或许任何负数都可以代表这个情形,但你不觉得交由null是更好的一件事情吗?
作者: ssccg (23)   2017-05-08 20:44:00
不要跳exception的话就很好
作者: outofyou   2017-05-10 00:47:00
想过这个问题,觉得让((person)null).name == (string)null好像可以,但又不想自己写compiler,所以发现C#有?.的语法时有惊喜到。但dictionary会分不清d[key].value==null及d[key]==null上一句错了,dictionary确认有没有此key很正常吧
作者: jinmin88 (昼伏夜出)   2017-05-11 04:56:00
相信我 如果没null可用某些状况下你会更想哭
作者: s89227 (Kei)   2017-05-12 21:12:00
遇到NullException表示你的逻辑设计有问题,Compiler才讨厌你吧,好心提醒你没好报!
作者: ssccg (23)   2017-05-13 06:24:00
null exception是runtime的吧? 跟compiler有关系?
作者: s89227 (Kei)   2017-05-15 01:31:00
……对欸,我脑袋一时糊涂了,谢谢楼上提醒QQ
作者: AizawaYuuiti ( )   2017-05-19 14:58:00
当person == null的时候,别说person.name是否等于john了,person是无法读取name属性的一般来说我会先在外面判断null,不是才进去做事是的话直接置底报错或跳过,因为有时候null是代表那里就是真的没东西,而不是不是你要的东西如果你没去检查是否有旧的物件残留,有时候会有逻辑上的盲点
作者: AWEN221 (Larry)   2017-05-31 14:45:00
不喜欢就自己覆写运算子......等有天你自以为都有赋值CODE量又很多 就需要它报错了

Links booklink

Contact Us: admin [ a t ] ucptt.com