C# “全局变量” 如何赋值和取值(急)

条件:一个类中的定义一个属性,在另一个类中能给起赋值,在第三个类中要能读取之前赋的值
问题:如何定义, 如何赋值,如何读取值?
(回答正确另有高分相赠)
但这个赋的值 在另外一个类中就得不到了
定义:class GlobalVariable
{
private string dBname;
public string DBname
{
get { return dBname;}
set { dBname = value;}
}
}
赋值:class B
{
GlobalVariable globalVariable = new GlobalVariable();
globalVariable.DBname = textbox1.Text.ToString();

}
取值:class C
{
GlobalVariable globalVariable = new GlobalVariable();
textbox2.txt=globalVariable .DBname;
}
在class C中读不到globalVariable .DBname属性值 求教应该如何改???

第1个回答  2012-04-05
在类A中定义一个private static void int a=0;
然后在其他地方直接用A.a;就可以用了
不过这个是静态的,如果你在一个程序中多次使用它就要注意了!追问

我的程序写在补充里了 应该怎么改呢? 我试过了 如果只是在GlobalVariable类中 定义时加static 是没用的

追答

你这样肯定是不行的,因为你2次访问class GlobalVariable 都是重新NEW的一个出来,所以,值都是初始值,你可以这样
定义:class GlobalVariable
{
private static string dBname;
}
赋值:class B
{

GlobalVariable.dBname = textbox1.Text.ToString();

}
取值:class C
{

textbox2.txt=GlobalVariable.dBname ;
}

第2个回答  推荐于2018-03-08
static修饰一下不就可以了么
class A{
public static int b;
}
class B
{ void a(){ A.b = 1;} }..................

加static啊,
private static string dBname;
public static string DBname追问

public class GlobalVariable
{
private static string dBname;

public static string DBname
{
get { return dBname; }
set { dBname = value; }
}
}
这样吗?
可是这样 globalVariable点后面就没有dBname了

追答

GlobalVariable.DBname

追问

Great! 传进来了!
麻烦再问一下 如果变量是一个DataTable 呢也可以吗?
public class GlobalVariable
{
private static DataTable dt;

public static DataTable Dt
{
get { return dt; }
set { dt= value; }
}
}
要不要在private static DataTable dt后面加 =new DataTable();呢???

追答

可以。最好加上,要不然第一次用的时候会出异常的。

本回答被提问者和网友采纳
第3个回答  2012-04-05
在class C中取值时,你又重新实例化了class GlobalVariable,所以在你实例化之后值会被清空;
最好在类GlobalVariable中把变量定义成静态(static)的,调用时直接用类名调用
第4个回答  2012-04-05
定义成静态属性,但是使用的时候要注意lock下,不然并发的时候会有问题
第5个回答  2012-04-08
要把 DBname定义成static型的才能调用
相似回答