我从MSDN获得了示例代码,我发现了以前从未见过的代码语法:
namespace Mvc3RemoteVal.Controllers
{
public class HomeController : Controller
{
IUserDB _repository;
#if InMemDB
public HomeController() : this(InMemoryDB.Instance) { }
#else
public HomeController() : this(new EF_UserRepository()) { }
#endif
public HomeController(IUserDB repository)
{
_repository = repository;
}
[...]
}
那些#if
,#else
,#endif
是什么?
什么是#if InMemDB
?
什么是InMemDB
?变量?
答案 0 :(得分:14)
这些被称为preprocessor directives并且自.NET 1.0以来就存在。它们允许您定义不同的编译指令,例如InMemDB
,如果已定义此变量,编译器将评估或不评估块。 #if directive的文档提供了更深入的概述。
为了定义变量,您可以使用/define编译器选项或使用项目属性的 Build 选项卡中的条件编译符号在Visual Studio中:
答案 1 :(得分:1)
这些不是Framework 4的新功能
这是您可以用于开发阶段和测试的功能: 你可以声明:
#Define something
然后
#if something
将执行“if”中的所有代码。 所有不是的代码,不会。