我有一个C#控制台应用程序。例如,我希望主程序确定我是否处于DEBUG模式,并设置一个变量,比如... g_Bypass,每个类都可以引用它。
示例:
class test
{
public static bool g_testMode;
test()
{
g_testMode = true; // read from the database.
// more code...
Object1 _obj = new Object1();
// do more stuff with _obj...
}
}
class Object1
{
public Object1()
{
// constructor
if (g_testMode) // << I'd like to just refer to it this way!
{
// do something
}
}
}
答案 0 :(得分:2)
没有。在.Net中,每个变量和方法都必须包含在一个类中。但是,可以使用全局范围访问静态公共成员,但在类外部使用时,必须使用类名称作为前缀。但是你可以打电话给你的班级g
,而不是g_testMode
你必须写g.testMode
。虽然不鼓励使用小写的类名,但可能更好G.testMode
。
你的例子不如:
static class G //static is not necessary here
{
public static bool testMode;
}
class test
{
test()
{
G.testMode = true; // read from the database.
// more code...
Object1 _obj = new Object1();
// do more stuff with _obj...
}
}
class Object1
{
public Object1()
{
// constructor
if (G.testMode) // << I'd like to just refer to it this way!
{
// do something
}
}
}
答案 1 :(得分:1)
如果是调试模式,您担心可以通过执行以下操作在方法或类定义中的成员变量中创建局部变量:
#if DEBUG
bool debug = true;
#else
bool debug = false;
#endif
如果由于某种原因你想创建一个全局静态:
public static class Test {
#if DEBUG
public static bool debug = true;
#else
public static bool debug = false;
#endif
}
这需要在对象外部作为Test.debug
您需要在项目的构建屏幕
中定义变量DEBUG
因为你可以做到这一点,并且意味着你应该做到!!!