例如,在C#中(从v6开始)我可以说:
mass = (vehicle?.Mass / 10) ?? 150;
Run Code Online (Sandbox Code Playgroud)
如果有车辆,则将质量设置为车辆质量的十分之一;如果车辆为空,则设置为150(或者如果Mass属性为可空类型,则为零质量).
我可以在我的C#应用程序的脚本中使用Python(特别是IronPython)中的等效构造吗?
这对于显示可以被其他值修改的值的默认值特别有用 - 例如,我可能在我的星舰的脚本中定义了一个装甲组件,它总是消耗其安装的船上可用空间的10%,它的其他属性也可以缩放,但我想显示装甲大小,生命值,成本等的默认值,这样你就可以将它与其他船舶组件进行比较.否则,我可能不得不写一个复杂的表达式进行空检查或两次,就像我在V6之前在C#中所做的那样.
Mar*_*ers 12
不,Python(还)没有NULL合并运算符.
有一个提议(PEP 505 - 无意识运营商)来添加这样的运营商,但是没有共识存在或者根本不应该添加到语言中,如果是这样,这些将采取什么形式.
从实施部分:
鉴于对无意识运营商的需求是值得怀疑的,并且所述运营商的拼写几乎是煽动性的,CPython的实施细节将被推迟,除非我们更清楚地认识到一个(或多个)拟议的运营商将被批准.
需要注意的是Python并不真正拥有的概念null.Python名称和属性总是引用某些东西,它们永远不是null引用.None只是Python中的另一个对象,社区不愿意让一个对象如此特殊以至于需要自己的运算符.
直到这个时间实现(如果有的话,IronPython赶上Python版本),您可以使用Python的条件表达式来实现相同的目标:
mass = 150 if vehicle is None or vehicle.Mass is None else vehicle.Mass / 10
Run Code Online (Sandbox Code Playgroud)