Xamarin中如何判断可空对象是否为空以给Label设置指定文本
原代码不生效的原因
你只处理了test为null时的赋值逻辑,没有补充test有值时的文本赋值操作,所以非null场景下Label不会更新,看起来就像代码没生效。
另外还要注意链式调用过程中如果SnowForecast对象本身为null,会直接抛出空引用异常,你的代码没覆盖这类异常场景。
推荐实现方案
用C#的空条件运算符+空合并运算符可以一行搞定需求,代码更简洁也更安全:
// 加?.避免SnowForecast为null时抛空引用异常 double? test = weatherBindingData.WeatherDataForecastHourly.List[0].SnowForecast?.SnowForecastValue; // ??会判断test是否有值,无值就用0替代,最后统一拼接单位 SnowForecast1Day.Text = $"{test ?? 0} mm";
如果需要保留if分支的写法,补全有值时的逻辑即可:
double? test = weatherBindingData.WeatherDataForecastHourly.List[0].SnowForecast?.SnowForecastValue; if (!test.HasValue) { SnowForecast1Day.Text = "0 mm"; } else { SnowForecast1Day.Text = $"{test.Value} mm"; }
内容的提问来源于stack exchange,提问作者Pizhev Racing
相关产品推荐
相关产品推荐

