为什么我可以Object Initializers
在针对 .NET 2.0 的 Visual Studio 2008 Windows 项目等中使用,但不能在针对 .NET 2.0 的 ASP.NET 项目中使用?
我知道这是 C# 3.0 功能,但不知道 - 为什么这可能在 .NET 2.0 项目中使用。
为什么我可以Object Initializers
在针对 .NET 2.0 的 Visual Studio 2008 Windows 项目等中使用,但不能在针对 .NET 2.0 的 ASP.NET 项目中使用?
我知道这是 C# 3.0 功能,但不知道 - 为什么这可能在 .NET 2.0 项目中使用。
可能是因为针对 2.0 框架的 ASP.Net 东西假定它将以可能必须即时编译一些代码的模式运行。由于它在 2.0 模式下运行,它将在该阶段获得 2.0 编译器(因此任何依赖于 3.0 编译器的东西都会失败)
当从“正常”项目中定位 2.0 代码库时,编译就完成了,因此依赖 3.0 编译器功能就可以了。
当您以 .NET 2.0 运行时为目标时,您也以 C# 2.0 编译器为目标。那个版本的编译器不理解 3.0 的特性。
这是一个处理在 .NET 2.0 项目中使用 C# 3.0 功能的现有问题。它解释了哪些 C# 3.0 功能可用,哪些不可用以及如何使用它们。
为了帮助您解决任何特定的困难,我们需要具体的细节。
关于 C# 中的高级特性以及它们如何从 C# 1.0 发展到 3.0 的最佳信息来源是Jon Skeet 的书。他经常在这里,甚至可能提供一些额外的见解。但是,您确实应该拥有这本书。
一个普通的 ASP.NET 网站会即时编译,这意味着它将使用可用于您的 Web 服务器上的虚拟目录的编译器。如果设置为 ASP.NET 2.0,它将使用 2.0 编译器(而不是针对 .NET 2.0 的 3.0 编译器)。我假设当您将您的网站转换为 Web 应用程序时,您将能够以 3.0 为目标并且仍然使用 3.0 的一些功能。我建议尝试一下,我会的,但我现在没有时间。让我们知道它是否有效;-)