全局变量的一些思考(适合刚入门C#朋友看看)
首先说一下本人非计算机专业,只是爱好另外加工作需要.平时偶尔写一些小的程序,最近给单位用C#做某个小程序时候遇到了一些小问题,分享出来.
1.全局变量
在C#中已经不存在全局变量的说法,但是在实际的程序用还是用到对于整个程序来说还是在每个地方都可以用.考虑了三种解决方案
a)声明一个类,在类里面声明一些静态的变量,通过这种方法来保存一些"全局变量".代码如下:
//用这个SysName来保存程序的名称
public static string SysName = "信息系统";
public static string SysName = "信息系统";
b)另外用到了hashtable来保存"全局变量",hashtable存在一个特性,就是key和value的一一对应.我也是借鉴别人的方法.在当时赋值的form上面可以取到数据,在其他的form上面就取不到了,但是我不知道问题出在哪里,始终没有调试成功.还请各位大侠发现下问题.
代码
public static Hashtable GlobalVariable = new Hashtable();
public static object GetValue(object akey)
{
return GlobalVariable[akey];
}
public static void SetValue(object akey, object avalue)
{
GlobalVariable[akey] = avalue;
}
public static void Remove(object akey)
{
GlobalVariable.Remove(akey);
}
public static object GetValue(object akey)
{
return GlobalVariable[akey];
}
public static void SetValue(object akey, object avalue)
{
GlobalVariable[akey] = avalue;
}
public static void Remove(object akey)
{
GlobalVariable.Remove(akey);
}
c)最后方案就是用了dictionary,看了园子里面很多大师的介绍,说这个效率比较高.但是我没有测试,实力有限还有各位大师指点下!代码贴出来,请各位大师看看.
代码
//通过Setvalue 和GetValue来赋值和取值,这个方案在调试时候是通过了,但是不知道有没有什么漏洞
public static Dictionary<int , string> GlobalDictionary = new Dictionary<int , string>();
public static string GetValue(int Tkey)
{
if (GlobalDictionary.ContainsKey(Tkey))
{
return GlobalDictionary[Tkey];
}
else
{
return "error";
}
}
public static int SetValue(int Tkey, string Tstring)
{
if (GlobalDictionary.ContainsKey(Tkey))
{
return 0;
}
else
{
GlobalDictionary.Add(Tkey, Tstring);
return 1;
}
}
public static Dictionary<int , string> GlobalDictionary = new Dictionary<int , string>();
public static string GetValue(int Tkey)
{
if (GlobalDictionary.ContainsKey(Tkey))
{
return GlobalDictionary[Tkey];
}
else
{
return "error";
}
}
public static int SetValue(int Tkey, string Tstring)
{
if (GlobalDictionary.ContainsKey(Tkey))
{
return 0;
}
else
{
GlobalDictionary.Add(Tkey, Tstring);
return 1;
}
}
浅薄之见还请各位大师指点一二!