C# .NET如何在匿名类型中强制转换null?

agyaoht7  于 2022-12-14  发布在  .NET
关注(0)|答案(1)|浏览(165)

此代码将不编译:

var x = new {
            Property = null,
        };

以下情况除外:无法将null赋给匿名类型属性
但这将工作得很好:

var someBool = false;
        var x = new {
            Property = someBool ? "value" : null,
        };

我认为存在类似这样的隐式强制转换-(string)null但不完全确定。
所以我想知道更多关于这个案例的信息,以及它是如何在内部工作的(我没有找到任何解释这个问题的文章)

rxztt3cl

rxztt3cl1#

编译器需要为匿名类型的属性确定类型,这不能仅仅从null来完成(尽管在这种情况下,你可以争论使用object,但请参阅下面的引号),相反,ternary operator有一个类型(请参阅解释编译器如何确定它的链接文档),在someBool ? "value" : null的情况下,它是string
来自anonymous types文档:
用于初始化属性的表达式不能是null、匿名函数或指针类型。

相关问题