我现在无法升级Net。我想实现这样public SiteOptionModel? Site { get; set; }的目标bool?。但它说我应该升级.Net,但我担心升级.Net会毁掉一个相当大的项目。有什么办法可以实现这一点吗?
public bool IsVisibleInGrid { get; set; }
public SiteOptionModel? Site { get; set; }
public bool? IsDeleted { get; set; }
Run Code Online (Sandbox Code Playgroud)
LinQ 查询显示没有 SiteId 的错误
from truck in database.Truck
where truck.CarrierId == carrierId
&& (truck.IsDeleted == null || truck.IsDeleted == false)
orderby truck.Code
select new CarrierDetailViewModel.TruckModel2
{
Id = truck.TruckId,
Site = new CarrierDetailViewModel.SiteOptionModel{
Id = (int)truck.SiteId,
Name = truck.Site.Name,
Code = truck.Site.Code
}
} ;
Run Code Online (Sandbox Code Playgroud)
错误
严重性代码 说明 项目文件行抑制状态错误 CS8370 功能“可空引用类型”在 C# 7.3 中不可用。请使用 8.0 或更高版本的语言。
The*_*aot 12
编译器要求您使用该语言的较新版本,而不是 .NET 的较新版本。.NET 的每个版本都支持可为 null 的引用类型。在任何版本的 .NET 中,引用都可能为 null,只是在 C# 8.0 之前无法在 C# 中对其进行注释。
\n\n但是,您的项目配置为 C# 7.3,您需要更改语言版本。整个项目请参考如何启用C#8.0的Nullable Reference Types特性。
\n\n\n\n一旦您为 C# 8.0 配置了项目并启用了可空引用类型\xe2\x80\xa6 Roslyn,C# 编译器将理解可空性注释并基于它们提供代码分析。
\n\n无论如何你都必须处理 null 。这可能意味着空检查。即使在 C# 8.0 中,访问空引用的成员仍然是NullReferenceException。至少静态分析会对您有所帮助。
请参阅什么是 NullReferenceException,以及如何修复它?。
\n\n如果您确实需要在旧运行时(例如async/await在 .NET 2.0 中)上运行新功能,我可能会为您提供一个解决方案:Theraot.Core。坦白说,我是其中的作者。
| 归档时间: |
|
| 查看次数: |
39339 次 |
| 最近记录: |