我可以给匿名类型属性分配空值吗?

47

我在WebAPI中有以下内容,将其转换为JSON字符串并发送到客户端:

return Ok(new
    {
        Answer = "xxx",
        Text = question.Text,
        Answers = question.Answers.Select((a, i) => new
        {
            AnswerId = a.AnswerId,
            AnswerUId = i + 1,
            Text = a.Text
        })
    });

现在我意识到我想将空值赋给Answer。 但是这会提示我一个消息

cannot assign <null> to anonymous type property. 

有没有办法可以不定义一个类就能将null赋值给它?


2
我不认为这是一个重复的问题。这是一个有用的、具体的问题,有一个简单的答案。链接的问题涵盖了它,但是那个问题是关于处理数组的。 - goodeye
1个回答

112

当然可以 - 你只需要将 null 值转换为正确的类型,这样编译器就知道你想要那个属性的类型。例如:

return Ok(new {
    Answer = (string) null,
    Text = ...,
    ...
});

(string) null 真的不同于 (int) null 吗? - Anshul
3
@Anshul:嗯,(int) null 不是有效的...但如果你选择了一个*有效的类型,那么是的,它们是不同的,因为它们具有不同的编译时类型,这意味着结果中的匿名类型将具有不同的属性类型。 - Jon Skeet
1
好的,(int) null 不是有效的。不知道为什么我没有意识到这一点。当然了,谢谢你的回答。很有道理。 - Anshul
太好了!记住,对于某些原始类型和布尔类型,不允许使用null值。 - Wedson Quintanilha da Silva
1
现在它应该是(字符串?)空的。 - Timur Lemeshko
@TimurLemeshko:这取决于你是否处于可空上下文中。我绝对不会重新检查成千上万行代码的答案,做出可能会破坏某些用户的更改。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接