c# - 在为较旧的 .NET Framework 版本构建时使用较新的 C# 功能是否安全?

标签 c# .net visual-studio

我维护一个 .NET 2.0 库(目前使用 Visual Studio 2013)。

我对库的代码使用了代码检查工具,当该工具建议使用 ?? 运算符或 lambda 而不是某些代码时,我感到很惊讶。

当我应用建议的编辑并且之后成功构建库时,我更加惊讶。

为什么 Target Framework 设置为 .NET Framework 2.0 的库可以在其代码中使用 C# 的更新功能构建?

在为较旧的 .NET Framework 版本构建时使用较新的 C# 功能是否安全?我的意思是,该库的用户只能拥有 .NET Framework 2.0,我希望他们能够使用该库,即使我在它的代码中使用了 lambda。

最佳答案

.NET 2.0 和 C# 2.0 是两个不同的东西。在您的情况下,您完全可以拥有一个 .NET 2.0 库(以 CLR 2.0 为目标)并使用支持例如 lambda 表达式的 C# 3.0 编译器。

因此,您应该区分编译器版本和 objective-c LR 版本。由于您使用的是 VS 2013,因此您可以使用更新版本的编译器。

Is it safe to use newer C# features when building for older .NET Framework versions?

是的,绝对安全。生成的程序集仍然以 CLR 2.0 为目标,并且可以在这个旧版本的 CLR 上正常运行。

关于c# - 在为较旧的 .NET Framework 版本构建时使用较新的 C# 功能是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662062/

相关文章:

c# - 生成一个强类型代理,当一个属性设置为另一个属性时,它可以跟踪属性名称而不是值的变化

.net - 检查路径是UNC路径还是本地路径的正确方法是什么?

c# - WebBrowser 将图像复制到剪贴板

vb.net - 在 vb.net 中显示加载屏幕

c# - 将图 A 更改为图 B

属性的 C# 自定义序列化

c# - 为什么在混合 C# ValueTuple 和动态时出现此编译器错误

.net - NuGet CLI 抛出错误无法找到 .nupkg

c# - XDT Transforms——变换变换

c++ - 防止编码器错误 - 通过引用返回临时值(悬挂指针)