C# 8 中的 Non-Nullable 引用类型的默认值是多少?

Posted

技术标签:

【中文标题】C# 8 中的 Non-Nullable 引用类型的默认值是多少?【英文标题】:What is the default value of Non-Nullable reference types in C# 8? 【发布时间】:2019-08-31 15:08:31 【问题描述】:

如果我启用可为空的引用类型,如果我这样声明,下面的字符串的值是多少?

string text;

【问题讨论】:

这也是我的问题。如果引用类型不可为空,为什么它们的默认值 null 大声笑 【参考方案1】:

值为null

请记住,可空引用类型的新系统只会警告您遇到问题,它不会给您错误,这意味着代码将仍在编译,但有警告。

如果你声明这个类:

public class Test
 
    private string text;

您的班级会收到此警告:

CS8618: Non-nullable field 'text' is uninitialized.

但是,代码仍然可以编译

为了(再次)回答您的问题,该字段的默认值为null

注意:如果你用那个语句来声明一个局部变量,答案是它不会有值,它会被认为肯定是未赋值的,并且你不能从该变量,直到您有适当的代码,使其首先明确分配。


至于警告与错误,您可以通过调整项目选项来选择将它们作为错误,并列出您希望被视为错误的警告。

【讨论】:

以上是关于C# 8 中的 Non-Nullable 引用类型的默认值是多少?的主要内容,如果未能解决你的问题,请参考以下文章

C# 8中的可空引用类型

C# 8 中的不可为空的引用类型在运行时可以为空吗?

使用 C# 8 的可空引用类型

C# 8.0 和可为空引用类型

C# 8.0 不可为空的引用类型和选项模式

如何将 C# 8.0 可空引用类型与 Entity Framework Core 模型一起使用?