C#中如何定义全局的宏(#define)

C# 中如何定义全局的宏变量(#define),可以在多个类文件中使用使用,以及可以在使用该动态库的类文件中使用
需要的是宏定义,编译开关,不是全局变量,是全局宏定义,比如#define DEBUG 这样一个宏定义,如何能够在没个类里面都使用,而不用没个类文件中都定义一次!

在 Project->Properties -> Build 设置中有一个 Conditional compilation symbols,将你要设置的宏的名称写在这个设置中就是全局的宏定义

1、在类的头部写上#define UInt32或者在项目的环境变量定义。

2、在用到这个变量的时候,写类解决,关键在于重写隐式和显式转换。

扩展资料;

C++中宏的作用

1、使用宏定义常量

宏定义不是C/C++严格意义上的语句,所以定义后不加分号,使用define后的标示符来代替常量,当需要在程序中多次使用200这个值,比如定义数组的长度等,并且可能在以后对该值做出修改时,使用宏定义,仅需要改变宏定义所表示的值即可,而不需要到程序中去寻找哪些地方使用了200。

2、当定义局部变量时,const所定义的变量的作用域,仅限于const定义所在的函数段,而使用宏定义#define,其作用域不仅限于定义所在的函数段,而是从定义点到整个程序的结束。

参考资料:百度百科C#

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-09-26

c#所有变量都要声明在class内。全局变量可以用静态变量替代。

public class A

public static int a;

调用时直接用类名,A.a = 1;

宏定义:

[Flags]

enum BuyFlag : uint

{

E_BuyClick = 0,

E_SelectStock,

E_RefPrice,

E_BuyNum,

E_BuyOK_First,

E_BuyOK_Second,

E_WinStartClick,

E_WriteCMD,

E_KillTdxw,

E_CloseCMD,

E_end = 99

}

扩展资料

使用 #define 创建的符号的作用域是在其中定义该符号的文件。如以下示例所示,必须将 #define 指令放在文件顶部。

#define DEBUG  

//#define TRACE  

#undef TRACE  

using System;  

public class TestDefine  

{  

static void Main()  

{  

#if (DEBUG)  

Console.WriteLine("Debugging is enabled.");  

#endif  

#if (TRACE)  

Console.WriteLine("Tracing is enabled.");  

#endif  

}  

}  

// Output:  

// Debugging is enabled. 

参考资料:百度百科 #define

本回答被网友采纳
第2个回答  推荐于2017-09-08
宏定义这个东西,主要还是取决你你要怎么使用。
C#当中,如果你希望定义一个全局变量或者说全局常量的话,那么建议使用
public static const int MAX_LENGTH;
但是如果你是定义编译选项的话,其实是可以使用#define的,比如可以定义
#define DEBUG实现宏编译
第3个回答  2011-12-30
C#把宏给去掉了,如果有全局变量或者定义,我一般这样
class Global
{
static const int val1 = 10;
static const string val2 = "Hello";
}
然后就可以这样用
Global::val1 == 10 do...
Global::val2 == "hello" do...
此外如果是一些宏的辅助运算,比如max(a,b)
可以使用C#里的泛型来实现,也不如C++好使,说实在的
第4个回答  2011-12-30
c#不支持宏定义,只支持编译开关。追问

对 要的就是编译开关。怎么弄?
我想加上#define xxx就编译a代码,否则编译b代码,像这样的:
#if xxx
a
#else
b
#endif
这样的代码到处都是,好多文件里都有
我想知道#define xxx这句话写在哪?能够只改这一处能管所有的编译

追答

把这句话放在此C#文件的最上面就可以了。

追问

有好多文件呢,每个都放太麻烦了。有没有一个地方放一个就都ok的,类似c++的预编译头文件或工程设置的

追答

// preprocessor_if.cs
#define DEBUG#define MYTEST
using System;
public class MyClass
{
static void Main()
{
#if (DEBUG && !MYTEST)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
Console.WriteLine("DEBUG and MYTEST are defined");
#else
Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
}
}

没有办法只放一个地方的,很麻烦的。
你干脆把原来的源程序用VC++编译成DLL封装输出,然后你新建一个C#工程调用DLL中的函数就可以了,这样是最简单的转换方法。

本回答被提问者采纳

C#中如何定义全局的宏(#define)
在 Project->Properties -> Build 设置中有一个 Conditional compilation symbols,将你要设置的宏的名称写在这个设置中就是全局的宏定义。1、在类的头部写上#define UInt32或者在项目的环境变量定义。2、在用到这个变量的时候,写类解决,关键在于重写隐式和显式转换。

C#中如何定义全局的宏(#define)
宏定义这个东西,主要还是取决你你要怎么使用。C#当中,如果你希望定义一个全局变量或者说全局常量的话,那么建议使用 public static const int MAX_LENGTH;但是如果你是定义编译选项的话,其实是可以使用#define的,比如可以定义 define DEBUG实现宏编译 ...

C# 中如何定义全局的宏变量(#define)
如果是Debug,那么直接勾选下面的那个多选框就可以了。至于其他的自定义的宏,则在红色箭头指向的输入框中定义。

C# define怎么使用
分为不带参数的和带参数的 不带参数的宏定义一般形式为 define 标示符 字符串 例如 define pi 3.14159 编译预处理时,将程序中所有pi用3.14159代替 带参数的宏定义一般形式为 define 宏名(参数表)字符串 例如 define S(a,b)a*b 程序中 c=S(2,3);d=S(5,6);就等同于 c=2*3;d=5*6...

C# DEBUG 宏定义在哪,找不到有#define DEBUG 1\/0之类的
你理解错了,define是C中的宏,在C#虽然也有define,但是意义是不同的(后者为条件编译),可以定义符号比如#define MACRO_1 但是不能赋值。在C#中如果有类似的常量需求,一般是通过const或者static或readonly之类的声明来实现的

求教宏#define DECLARE_STRING如何使用
即,不应将变量名传递到预处理器指令,并且只能用预处理器指令计算符号。 用 #define 创建的符号的范围是在其中定义该符号的文件。 示例 有关如何使用 #define 的示例,请参见 #if。 请参见 C# 预处理器指令 | 条件方法教程 ...

c语言中define是什么意思?
在C语言中,预处理器是编译过程的第一步。预处理器负责处理源代码中的指令,这些指令可以在编译前进行某些操作,例如插入文本、定义常量或条件编译等。`define`是预处理器的一个指令,用于定义宏。2. 宏的定义与使用 通过`define`指令,我们可以定义宏。宏可以是一个常量值、一个表达式或一个代码片段...

宏的结构
define宏名称替换内容其中,#define是宏定义的指令,后面跟着宏的名称和替换内容。宏的名称是一个标识符,可以自定义,替换内容可以是任何有效的C代码。例如,我们可以定义一个宏MAX,用于求两个数的最大值:c#define MAX(a,b)((a)>(b)?(a):(b))在这个宏中,MAX是宏的名称,(a,b)是替换内容...

C#.net里的“宏”是什么意思
宏是一组预先定义好的命令如#define _TS "hello"; _TS 这个宏就代表了"hello" 相当于一个变量 但是要和变量区分还可这么用 #define _TS if(a>b){return 0};这样_TS 这个宏就代表了一个表达式

C#中有宏定义吗?
c#不支持宏定义, 只支持编译开关,预处理指令(#define)。

相似回答