C# 将int转换为int?可能的更新?
我在本地构建了我的项目,其代码与以下类似:C# 将int转换为int?可能的更新?,c#,visual-studio,C#,Visual Studio,我在本地构建了我的项目,其代码与以下类似: bool success = true; int y = 0; int? x = success ? y : null; 但我们的生成计算机失败,出现以下错误: 错误CS0173:无法确定条件表达式的类型 因为“int”和“”之间没有隐式转换 因此,我必须将代码更新为: bool success = true; int y = 0; int? x = success ? (int?)y : null; 这使得构建机器能够正确地构建项目。我假设这是由
bool success = true;
int y = 0;
int? x = success ? y : null;
但我们的生成计算机失败,出现以下错误:
错误CS0173:无法确定条件表达式的类型
因为“int”和“”之间没有隐式转换
因此,我必须将代码更新为:
bool success = true;
int y = 0;
int? x = success ? (int?)y : null;
这使得构建机器能够正确地构建项目。我假设这是由于我在本地进行的某种更新导致的,而构建机器没有这种更新。也许是C#更新,但我什么也找不到。有人知道最近是否有任何与此相关的更新,您是否有文档链接
系统信息:
- Mac的Visual Studio社区2019
- 版本8.8.3(版本16)
- GTK+2.24.23(罗利主题)
- Xamarin.Mac 6.18.0.23(d16-6/088c73638)
- 软件包版本:612000107
- 版本8.8.3(版本16)
将目标框架更改为.NET5.0(隐式使用C#9.0标准)解决了这个问题。(您可能需要更新Visual Studio安装才能访问.NET 5 framework构建工具。)从我记事起,这一直是一项要求。如果您可以在本地计算机上以及使用C#9条件运算符的生成计算机上列出MSBuild版本,这可能会有所帮助。将本地VS与生成计算机配置进行比较会更有用。如果您使用.NET 5 SDK生成,应该可以。如果使用.NET Core 3.1 SDK进行构建,则会失败。错误抱怨
null
而不是y
。在.NET5之前,编译器无法推断null
是什么类型。您可以使用(int?)null来修复此问题,另请参见此处:谢谢,这非常有帮助。我正在阅读@Juharr发送的以下链接,现在我对它有了更好的理解。我不会对我们的构建机器做任何更改,因为我只是要求学习。