9

例如:

定义.cs

#define FOO

form1.cs

#if FOO 
  MessageBox.Show("foo is set!");
#else 
  MessageBox.Show("foo is not set!");
#endif

define.cs包含在与form1.cs相同的项目中,但上述条件给出:foo is not!

4

5 回答 5

13

你不能,但你可以做的是将定义移动到项目配置中,以便项目中的所有文件都可以看到定义。

请参阅如何在 C# 中全局定义常量(如 DEBUG)中的说明。

于 2012-06-06T14:35:41.673 回答
3

根据这个 MSDN 页面

用#define创建的符号的范围是定义它的文件。

于 2012-06-06T14:34:10.340 回答
3

在 C# 中,#define 的范围仅限于声明它的文件。
要定义在所有文件中可见的符号,一种方法是 Project->Properties->Build->Conditional Compilation Symbols 并在此处指定符号“FOO”。

于 2012-06-06T14:37:49.300 回答
1

你不能,用#define 创建的符号的范围是定义它的文件。

于 2012-06-06T14:34:01.790 回答
1

正如其他人所说,#define 仅限于单个文件。

但是,您可以定义作用于整个程序集的预处理器变量。为此,您只需进入项目设置的“构建”部分并将其放入“条件编译符号”部分。(这只是管理/define 编译器开关的一种更简单的方法。)这种方法还有一个额外的优势,即还允许您为不同的构建配置定义不同的符号集。

于 2012-06-06T14:37:29.710 回答