operator''不能应用于<int>类型的操作数和null </int>

时间:2013-06-06 08:05:45

标签: c# .net .net-4.5

我有以下方法接受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;
}

3 个答案:

答案 0 :(得分:4)

您只能将null-coalescing运算符与第一个操作数一起使用,该操作数是可空类型(可以为可空的值类型或任何引用类型)。听起来bas.BuildAppStatId只是int,这意味着你不能使用null-coalescing运算符。

如果你试图防止bas本身为空,你想要:

sourceId: bas == null ? (int?) null : bas.BuildAppStatId,

答案 1 :(得分:0)

来自?? Operator (C# Reference)

  

?? 运算符称为null-coalescing运算符,用于   为可空值类型引用类型定义默认值。

由于您的bas.BuildAppStatIdint,因此您无法在此使用??

答案 2 :(得分:0)

应将BuildAppStatId声明为可为空的。

int?

然后如果您遇到“?? null”的问题,请使用

... ?? null as int?

... ?? default(int?)