csproj中<Nullable>属性的默认值是什么?
关于csproj中
<Nullable>属性默认值的确认方法 要确认<Nullable>属性的默认状态变化,核心是绑定.NET SDK版本(C#语言版本和SDK版本强关联),可以通过以下步骤验证:
明确SDK与C#版本的对应关系
.NET 6对应C# 10及更早,.NET 7对应C# 11,以此类推。你可以在项目目录执行dotnet --version查看当前使用的SDK版本,或者直接看csproj文件里的<TargetFramework>节点(比如net7.0就是.NET 7环境)。不同版本的默认规则
- .NET 6及更早:
<Nullable>默认值为disable,即默认关闭可空引用类型检查。 - .NET 7及之后:当目标框架为
net7.0或更高版本时,<Nullable>默认值为enable,自动开启可空引用类型检查;如果项目目标框架是旧版本(比如net6.0),即使使用.NET 7 SDK编译,默认值仍为disable。
- .NET 6及更早:
实际验证步骤
- 新建一个.NET 7控制台项目,不要手动添加
<Nullable>配置。在代码里写string s;,编译时如果编译器抛出“未赋值的变量's'”的警告(或错误,取决于警告等级),就证明默认启用了可空检查。 - 新建一个.NET 6控制台项目,写同样的代码,编译时不会出现该警告,说明默认处于禁用状态。
- 查看项目生效的
<Nullable>值:在项目目录执行dotnet msbuild /property:Nullable,命令会输出当前项目实际使用的配置值,不管是默认还是手动设置的。
- 新建一个.NET 7控制台项目,不要手动添加
内容的提问来源于stack exchange,提问作者mnj
相关产品推荐
相关产品推荐

