【发布时间】:2016-06-23 13:30:48
【问题描述】:
我有几页,每页都有一个名为Data 的属性。在另一个页面上,我将这些数据设置为:
if (MyPage1 != null)
MyPage1.Data = this.data;
if (MyPage2 != null)
MyPage2.Data = this.data;
if (MyPage3 != null)
MyPage3.Data = this.data;
有没有可能在MyPage 上使用空条件运算符?我正在考虑这样的事情:
MyPage?.Data = this.data;
但是当我这样写时,我得到以下错误:
赋值的左侧必须是变量、属性或索引器。
我知道这是因为MyPage 可能为空,而左侧不再是变量。
并不是说我不能像我已经拥有它那样使用它,而是我只是想知道是否有可能对此使用空条件运算符。
【问题讨论】:
-
您应该能够创建一个
SetData方法并执行MyPage1?.SetData(this.data); -
空传播/条件运算符用于访问属性,而不是设置它们。因此你不能使用它。
-
我个人认为这是当前实现的一个错误。左侧的属性是调用属性设置器方法的简写,因此您应该可以使用 ?在 null 属性上,就好像您已显式调用 set 方法本身一样。
标签: c# null-conditional-operator