c# - 在赋值的左侧使用空条件运算符

标签 c# null-conditional-operator

我有几个页面,每个页面都有一个名为 Data 的属性。在另一个页面上,我将这样设置此数据:

if (MyPage1 != null)
    MyPage1.Data = this.data;
if (MyPage2 != null)
    MyPage2.Data = this.data;
if (MyPage3 != null)
    MyPage3.Data = this.data;

是否有可能在 MyPage 上使用 null 条件运算符?我在想这样的事情:

MyPage?.Data = this.data;

但是当我这样写的时候,出现如下错误:

The left-hand side of an assignment must be a variable, property or indexer.

我知道这是因为 MyPage 可能为空,左侧不再是变量。

并不是说我不能像我已经拥有的那样使用它,而是我只是想知道是否有可能对此使用 null 条件运算符。

最佳答案

空传播运算符返回一个值。由于您必须在赋值的左侧有一个变量,而不是一个值,因此您不能以这种方式使用它。

当然,您可以使用三元运算符来缩短内容,但另一方面,这并不能真正提高可读性。

Joachim Isaksson 对您的问题的评论显示了一种应该有效的不同方法。

关于c# - 在赋值的左侧使用空条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887106/

相关文章:

c# - 访问基类重写 ToString 方法中的子类对象

c# - 异常:指定类别中不存在实例 'Name of instance'

c# - BitArray 以错误的方式返回位?

c# - ?。 C# 中的运算符由于未知原因未编译

c# - 为什么 Visual Studio 不警告我空引用异常?

c# - 如何为集合创建类似于空条件运算符的空条件运算符?

c# - 在赋值的左侧使用空条件运算符

c# - 是否可以使用更具体(按返回类型)的方法覆盖基方法?

c# - 如何在C#中实例化堆中的结构

c# - 类型转换调用链中的 Elvis 运算符