提高C#项目的语言版本号有任何风险吗?

提高C#项目的语言版本号有任何风险吗?,c#,C#,我最近开始了一份新工作。他们在这里使用C#5,一种非常古老的语言版本,用于多个针对.NETFramework4.5.2的项目。这里大量涉及多线程。我找不到任何关于提高*.csproj语言版本的影响的信息,所以标题说明了一切。将语言版本提高到7.3会带来哪些变化?我看不出有什么风险。与5相比,C#在7.3中没有突破性的变化。8.0将引入不可为空的类型,这将在整个代码中引起大量警告,但在7.3中则不是这样。C语言是向后兼容的。你不必为此担心 另一方面,CLR有时会在引擎盖下引入更改(有时是bug)。

我最近开始了一份新工作。他们在这里使用C#5,一种非常古老的语言版本,用于多个针对.NETFramework4.5.2的项目。这里大量涉及多线程。我找不到任何关于提高*.csproj语言版本的影响的信息,所以标题说明了一切。将语言版本提高到7.3会带来哪些变化?

我看不出有什么风险。与5相比,C#在7.3中没有突破性的变化。8.0将引入不可为空的类型,这将在整个代码中引起大量警告,但在7.3中则不是这样。

C语言是向后兼容的。你不必为此担心


另一方面,CLR有时会在引擎盖下引入更改(有时是bug)。当旧的框架版本不支持语言功能时,您可能需要切换到新的版本。这可能会以无法预料的方式影响您的程序。测试是你的朋友。

8.0可空类型功能不是可选的吗?@FCin是的,它是可选的。“C#在7.3中没有突破性的更改”,这是从未有过的。@patrickhoffman-从技术上讲,C#5中对
foreach
/variable capture的更改是一个突破性的更改,尽管任何故意基于旧语义构建代码的人都应该受到破坏。@Patrickhoffman—“C#5中的新功能”这些天在MS站点上似乎不存在,但这里有一个来自该时间段的示例(它确实进入了C#5)CLR版本是否等于框架版本?我刚刚将语言级别设置为7.3,一切似乎都很好,到目前为止没有出现任何问题。然而,自动化测试是不可能的——因为过去这里没有人关心这一点。我特别担心编译器应用的更改。不,不是。通常情况下,您不应该期望出现很多问题,但在正确测试之前,您永远无法确定。现在你有了一个很好的案例来介绍单元测试。哈,你能帮我把这个告诉产品所有者吗?我知道你是对的,但自动化测试在这里并不被认为是“经济高效”的。我想是在生产中修复bug吧@彼得萨巴基耶普,你明白了。是的,有相当大的风险。标准的情况是,团队中并非所有人都在使用最新的VS版本,因此您的签入将为他们生成编译错误。这不是自我介绍的好方法,一定要和团队成员谈谈。当您在编写时询问编码约定,每个团队都同意不做什么。所以,这不是一个合适的建议的地方,不要害羞。我不会在没有与同事达成一致意见的情况下这样做,但谢谢你的建议!