您可以为 C# 版本添加预处理器指令吗?

Can you add a preprocessor directive for a C# version?

有没有办法添加预处理器指令来比较编译器使用的 C# 版本?

例如:

public T MyMethod<T>()
{
#if CS_7
    return default; // Feature 'default literal' is not available in C# 7.0. Please use 7.1 or greater.
#else
    return null; // Ignore the fact that this won't work, it isn't the point of the question
#endif
}

.NET 版本是否适合?会不会出现同一个项目使用的编译器不同的情况? (即如果不同的雇员使用不同版本的Visual Studio)

显然你不能,但使用的 C# 版本取决于项目中使用的框架版本 (list of version per framework),它提供默认的 C# 版本,除非通过 属性(参见链接文档)。

因此,大多数需要 C# 版本预处理器指令的情况都可以通过添加 framework preprocessor directive 或使用项目中的 属性 在项目本身中强制使用特定的 C# 版本来解决文件。