C#8中非空引用类型的默认值是什么?

时间:2019-04-10 08:14:37

标签: non-nullable c#-8.0 .net-core-3.0 nullablereferencetypes

如果我启用了可为空的引用类型,那么如果我这样声明的话,以下字符串的值是什么?

string text;

1 个答案:

答案 0 :(得分:6)

要回答您的问题,值将为null

请记住,可为空的引用类型的新系统只会对问题发出警告,不会给您错误,这意味着代码将仍然编译,并带有警告。

如果您声明此类:

public class Test
{ 
    private string text;
}

您会在班级收到以下警告:

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

但是,代码仍然可以编译

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

注意::如果您使用该语句声明局部变量,则答案是该变量将没有值,它将被视为绝对未赋值的,并且不允许您读取该变量,直到您有明确的位置使其明确分配的代码为止。


对于警告与错误,您可以通过摆弄项目选项来选择将其视为错误,并列出要视为错误的警告。