【发布时间】:2020-07-22 16:58:28
【问题描述】:
给定的代码如下:
a.b.c = 12;
有没有办法使用像?. 和?? 这样的运算符来安全地处理a 或b 是null 的情况,并且在这种情况下什么也不做。 a?.b?.c = 12 给出一个编译器错误,大概是因为 L 值可能为 null 并且您不能分配给 null。
我使用的是 C# 7.3,所以 ??= 运算符不可用,但即使是,我也不认为这是解决方案。是否可以或必须进行明确的检查?
【问题讨论】:
-
所以你希望 12 存储在 a、b 或 c 中,以第一个非 null 为准?
-
不,我希望它按照我的原始表达式存储,但如果
a或b为空,则不执行任何操作 -
嗯,好的,现在和你在一起。问题是
?.返回一个值,而您希望有一个引用。 -
我通常会在
A类中编写SetB()、SetC()方法。这样你就不会到处都有丑陋的if条件。 -
如果你可以显式调用 setter 属性方法
c(12)问题会得到解决,但我认为这也不可能!
标签: c#