c# - 在 C# 2.0 中使用关键字 var 不好吗?

标签 c# .net compiler-construction

我读了一篇关于 using C# 3 features in C# 2 的文章例如,您可以在其中键入 var x = 2;,即使该项目是 2.0 项目,Visual Studio 2008 编译器也会选择它并生成与键入 时相同的代码int x = 2.

但我不明白的是,在某些情况下您是否应该这样做?我一直认为 var 关键字直到 C# 3 才出现。如果编译器生成相同的代码并且我可以键入完全相同的 C# 3 代码和 C# 2 代码,那么究竟有什么区别,因为 CLI 是一样的,对吧?

引用上面的链接

Behind the scenes, the compiler generate regular .NET 2.0 code.

.NET 2.0 代码和 .NET 3 代码之间有什么区别吗?

最佳答案

恐怕您混淆了 C# 版本和 .NET 版本。

在C# 2.0 中不能使用var,编译器会认为它只是一个标识符。但您可以在面向 .NET 2.0 的 C# 3.0 中使用它,因为 var 只是一种语言 (C#) 结构,而不是 .NET 结构。 .NET 编译器会将其转换为生成的 CIL 中的适当类型,因此 JIT 编译器永远不会看到它,您会完全没问题。

由于 VS2008 编译器是 C# 3.0 编译器,因此无论您的目标是哪个 .NET 版本,您都可以在那里使用 var

关于c# - 在 C# 2.0 中使用关键字 var 不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736442/

相关文章:

c# - RabbitMQ 批量消费消息并一次性确认

c# - .Net 性能工具

c# - 在 BuildServiceProvider 之前访问服务

java - "Error during linking"表示用 Ocaml 编写的 Java 编译器

c# - 如何使用 mod_wsgi (django) 和 python 将文件从 C# 发送到 apache?

c# - 使用 HttpWebRequest.GetResponse 时出现 KeepAliveException

c# - 方法 : params string[] with one parameter and single string

c++ - 为什么字符串在新编译器中不可修改

C# 导入 C++ dll

.net - 文件有多个属性时如何判断文件是否隐藏