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

dii*_*___ 28 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;
Run Code Online (Sandbox Code Playgroud)

是否有可能使用空条件运算符MyPage?我在考虑这样的事情:

MyPage?.Data = this.data;
Run Code Online (Sandbox Code Playgroud)

但是当我这样写时,我收到以下错误:

赋值的左侧必须是变量,属性或索引器.

我知道这是因为MyPage可能是null而左侧不再是变量.

这并不是说像我有它已经,但我只是想知道是否有任何可能使用空条件操作这个我不能使用它.

All*_*hty 10

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

当然,你可以通过使用tenary运算符来缩短时间,但另一方面,这对可读性方面没有帮助.

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


dii*_*___ 8

正如Joachim Isaksson在评论中建议的那样,我现在有一个方法SetData(Data data)并使用它如下:

MyPage1?.SetData(this.data);
MyPage2?.SetData(this.data);
MyPage3?.SetData(this.data);
Run Code Online (Sandbox Code Playgroud)