C#中怎么用全局变量

yangsongx 2008-01-11 02:34:41
我有几个变量, 有好几个不同的类都要用得到这些变量.
怎么在C#中定义这些变量为所有类都能用的全局变量呢?
...全文
3094 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowerjack 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vrhero 的回复:]
全局变量的概念不符合OO思想...应该摈弃...

例如我们都知道自然界中光速是恒定不变的...按照PO的思维它就应该就是全局变量...但光速还是对象光的一个属性...

所以你应该考虑的是实现一个公共类而不是全局变量...
[/Quote]


其实只要可以实现,又没有什么缺点的话,又何必在意它是什么呢?可以的话,解析一下
yyne 2008-01-16
  • 打赏
  • 举报
回复
ggsddu
LRG315 2008-01-15
  • 打赏
  • 举报
回复
LZ的项目只有几个"公共变量"是吧,那项目应该不是很大吧.

我觉得用什么方法来实现"公共变量"对于整个项目来说,

是次要的问题,重要的是整体架构、设计模式等。

在项目初始化版本开发完成进入试用后,

再对一些小问题进行重构代码也可以啊。
shuang840723 2008-01-15
  • 打赏
  • 举报
回复
加属性就完了
crazycalf 2008-01-14
  • 打赏
  • 举报
回复
大家好,这里是新疆的.net QQ群体,欢迎大家加入(50794700)
Erice 2008-01-14
  • 打赏
  • 举报
回复
这么说,java 为了摒弃全局变量 出现了IOC 注入模式,所有注册,需要实例化的对象,都统一放置在当前环境的容器里,这个是个公有类,它只允许访问,至于向里添加实例化的动作,交给了框架完成。
那么,lz,也可以考虑这种方式,当然不是叫你用IOC框架。你可以设计一组个类,根据实例化的对象不同存放不同的包含的对象。
这样可以解决你说的全局变量的问题。同时,稍加修改,你也可以将这组类,转变成自己的Cache。

说的不好,见谅!
dannyming 2008-01-14
  • 打赏
  • 举报
回复
加个public static
null1 2008-01-14
  • 打赏
  • 举报
回复
看来这么多的回答,都在讨论该不该用静态,我认为学的不应该那么死。
如果是多人的一个项目,用的话的确麻烦。但你说一个小程序,一个人做的,几天的活,你非要按一个完整的项目去做,不累吗?
beetle_shao 2008-01-14
  • 打赏
  • 举报
回复
顶下8楼

全局变量的概念不符合OO思想...应该摈弃...

例如我们都知道自然界中光速是恒定不变的...按照PO的思维它就应该就是全局变量...但光速还是对象光的一个属性...

所以你应该考虑的是实现一个公共类而不是全局变量...


ojekleen 2008-01-14
  • 打赏
  • 举报
回复
可以用
结构和枚举
xyc522 2008-01-14
  • 打赏
  • 举报
回复
长见识了,初学者收藏慢慢看
gimse7en 2008-01-14
  • 打赏
  • 举报
回复
真正称为全局要算application吧
zhanlinzhangna520 2008-01-14
  • 打赏
  • 举报
回复
关键字static在c#语法一个功能就是定义全局变量,如: public static 类型 变量名 ;
然后就可以在整个项目中使用了,我前几天还用多.呵呵
另外加一句,这个关键字和c中使用不一样,注意区别.
cqunknown 2008-01-14
  • 打赏
  • 举报
回复
写个类.类里用public static 变量名
guyanabc 2008-01-14
  • 打赏
  • 举报
回复
static
Erice 2008-01-13
  • 打赏
  • 举报
回复
定义一个数据槽。

/// <summary>
/// 全局容器
/// </summary>
public class GlobalContext
{
private Hashtable context;

public GlobalContext()
{
context = new Hashtable();
}
/// <summary>
/// 查找指定的全局变量实例是否在容器类
/// </summary>
/// <param name="globalInstance"></param>
/// <returns></returns>
public bool Contains(object globalInstance)
{
return context.Contains(globalInstance);
}
/// <summary>
/// 查找指定的全局变量关键字是否在容器类存在实例
/// </summary>
/// <param name="globalName"></param>
/// <returns></returns>
public bool Contains(string globalName)
{
return context.ContainsKey(globalName);
}

/// <summary>
/// 提供全局变量关键字和实例,加载到容器中
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="globalName"></param>
/// <param name="globalInstance"></param>
public void Add<T>(string globalName,T globalInstance)
{

if (globalInstance != null)
{
if (!context.ContainsKey(globalName))
{

context.Add(globalName, globalInstance);


}
else
{
throw new ArgumentException("");
}
}
else
{
throw new ArgumentException("");
}

//return userChild;
}
/// <summary>
/// 指定全局变量关键字获得全局变量实例
/// </summary>
/// <param name="globalName"></param>
/// <returns></returns>
public object this[string globalName]
{
get
{
object fglFound = null;
if (context.ContainsKey(globalName))
{
fglFound = context[globalName];
}
return fglFound;
}
}
/// <summary>
/// 指定全局变量关键字在容器中删除
/// </summary>
/// <param name="globalName"></param>
public void RemoveAt(string globalName)
{
if (Contains(globalName))
{
context.Remove(globalName);
}
}

}
sslijun 2008-01-13
  • 打赏
  • 举报
回复
singleton 模式。
春天的气息 2008-01-13
  • 打赏
  • 举报
回复
楼主还不结题?
Cubar 2008-01-13
  • 打赏
  • 举报
回复
一般我也是用Static变量来做的!

PS:网速慢,回复页面刷不出来……
wellzjn 2008-01-13
  • 打赏
  • 举报
回复
嗯,c#中可以自定义全局变量的么??好像不...
加载更多回复(26)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧