我有以下方法接受BuildAppStat
个对象作为参数
但有时它可能为空。
所以我称之为:
sourceId: bas.BuildAppStatId ?? null
并且出现编译错误
operator''无法应用于
<int>
和null
类型的操作数。
请帮忙解决这个问题?
public PageBuildVrsn EditPageBuildVrsn(string caption, string nameInUse, string description, BuildAppStat bas = null, int pageBuildVrsnTypeId = 1)
{
PageBuildVrsn pbv = Create(pageBuildVrsnTypeId, caption, nameInUse, description);
pbv.ParentBuildAppStats = new List<BuildAppStat>();
pbv.ParentBuildAppStats.Add(
BasFactory.Create(
DateTimeOffset.Now,
true,
sourceId: bas.BuildAppStatId ?? null
)
);
return pbv;
}
答案 0 :(得分:4)
您只能将null-coalescing运算符与第一个操作数一起使用,该操作数是可空类型(可以为可空的值类型或任何引用类型)。听起来bas.BuildAppStatId
只是int
,这意味着你不能使用null-coalescing运算符。
如果你试图防止bas
本身为空,你想要:
sourceId: bas == null ? (int?) null : bas.BuildAppStatId,
答案 1 :(得分:0)
?? 运算符称为null-coalescing运算符,用于 为可空值类型或引用类型定义默认值。
由于您的bas.BuildAppStatId
是int
,因此您无法在此使用??
。
答案 2 :(得分:0)
应将BuildAppStatId声明为可为空的。
int?
然后如果您遇到“?? null”的问题,请使用
... ?? null as int?
或
... ?? default(int?)