You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor页面声明可空变量遇CS1061错误:Task无data定义如何解决

报错根本原因

核心是C#运算符优先级问题:成员访问运算符.的优先级高于await关键字。你原始代码的执行顺序是先对GetPossibleDuplicateRecord()返回的Task类型对象取.data属性,而Task本身没有data定义,因此触发CS1061编译错误,和_OldRecord是否为null无关。

之前修改无效的原因
  • 给_OldRecord添加?可空标识:该修改针对的是运行时变量空引用风险,当前属于编译期类型不匹配错误,二者完全不相关,因此无效果。
  • 未加括号直接将.data放在await调用后:只要没有括号包裹await段,执行顺序依然是先访问Task的data属性,所以还是会触发相同报错。
正确修改方案

方案1:添加括号明确执行优先级

用括号强制先执行await逻辑,拿到异步方法返回的实际业务对象后,再访问其data属性:

_OldRecord = (await GetPossibleDuplicateRecord(Convert.ToInt64(OldId))).data;

方案2:拆分两行写法(可读性更高,避免优先级坑)

拆分异步等待和属性访问两个步骤,从写法上规避优先级错误:

// 先await拿到异步方法的返回结果
var duplicateRecordResult = await GetPossibleDuplicateRecord(Convert.ToInt64(OldId));
// 再访问结果的data属性完成赋值
_OldRecord = duplicateRecordResult.data;

内容的提问来源于stack exchange,提问作者user8127184

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:45:03