Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将int转换为int?可能的更新?_C#_Visual Studio - Fatal编程技术网

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

如评论中所述,您需要C#9.0(或更高版本)来使用此类“目标类型”条件

例如,VS 2019和.NET Core 3.1的目标框架为您的原始代码生成了以下内容:

错误CS8400:功能“目标类型的条件表达式”不可用 在C#8.0中提供。请使用9.0或更高版本的语言


将目标框架更改为.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发送的以下链接,现在我对它有了更好的理解。我不会对我们的构建机器做任何更改,因为我只是要求学习。