35
|
Judah Gabriel Himango · 技术社区 · 15 年前 |
![]() |
1
18
有趣的是,有这么多人独立地选择了这个名字
我发现的最早的一个,所以: Possible pitfalls of using this (extension method based) shorthand 我的那个(不知道上面说的话): Pipe forwards in C# 另一个最近的例子: How to check for nulls in a deep lambda expression?
有几个原因可以解释
我一直在玩
我最终得到了一个简单的自给自足的
|
![]() |
2
14
虽然我很喜欢扩展方法,但我认为这并没有什么帮助。你仍然有表达式的重复(在单态版本中),这意味着你必须解释
这个
也许有一天我们会得到一个空安全解引用操作符… 另外,我最喜欢的半邪恶扩展方法是:
这样你就可以:
进入:
参数名仍然有令人讨厌的重复,但至少它更整洁。当然,在.NET 4.0中,我会使用代码契约,这就是我现在要写的内容…栈溢出是很好的避免工作;) |
![]() |
3
1
如果希望扩展方法减少嵌套if,可以尝试如下操作:
所以在你的代码中你只需要:
我不知道我是否愿意经常使用它,因为思考的缓慢,我并不真的认为这比选择更好,但它应该工作,无论你是否击中一个空的一路上… (注意:我可能把这些类型弄混了):) |
![]() |
4
1
如果您处理的是C 6.0/Vs2015及更高版本,那么它们现在有了一个用于零传播的内置解决方案:
|
![]() |
5
0
初始样本可以工作,并且是最容易阅读的一瞥。这方面真的需要改进吗? |
![]() |
6
0
ifnotnull解决方案是最好的(直到c团队给我们一个空安全的解引用操作符,也就是说)。 |
![]() |
7
0
我对这两种解决方案都不太着迷。原始版本的ashorter有什么问题:
如果不是这样,那么我将考虑编写一个NotNullChain或FluentNotNull对象,而不是在一行中链接几个非空测试。我同意ifnotnull扩展方法对空值的作用有点奇怪——尽管扩展方法只是语法上的糖分。 我认为MarkSynowiec的答案可能是通用的。 imho,我认为核心团队应该关注这个“问题”,尽管我认为还有更大的事情要解决。 |
![]() |
8
0
当然,原始的2嵌套if比其他选项更可读。但建议您更一般地解决问题,这里是另一个解决方案:
哪里
|