我有几个变量, 有好几个不同的类都要用得到这些变量.
怎么在C#中定义这些变量为所有类都能用的全局变量呢?

解决方案 »

  1.   

    随便找个类public    做不到吗?
      

  2.   

    写个类包含这几个变量,并把这向个变量定义成static的.
      

  3.   

    h_w_king  写成静态变量!
      

  4.   

    我的方法是定义一个类:
    internal class AppCfg
    {
    public AppCfg()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } internal static bool DebugStatus=false;
    internal static bool COMCanUse=true;
    }
    然后在程序中直接使用AppCfg.DebugStatus就可以了。
      

  5.   

    全局变量的概念不符合OO思想...应该摈弃...例如我们都知道自然界中光速是恒定不变的...按照PO的思维它就应该就是全局变量...但光速还是对象光的一个属性...所以你应该考虑的是实现一个公共类而不是全局变量...
      

  6.   

    静态
    ststic 调用的时候 就写变量名字就行
      

  7.   

    c#中没有全局变量
    要想实现全局功能,另建一个类,在其中定义个public static类型的变量,就到处都可以用了
      

  8.   


    用一个全局的类吧.定义一个公共类,然后成员是你想公用的变量。public class Globe
    {
        public static int V_1;//公共变量 
    }
      

  9.   

    如果是要传递参数的话就用session或者application
      

  10.   

        //定义全局变量,用于保存各种常用数据
        public class AAA
        {
            public static string sqlstr = "SERVER=(local);DATABASE=cg_hy;UID=sa;PWD=;connection Timeout=1";
            public static string ts = "XX软件";
            public static string text = "欢迎使用XX软件";
            public static SqlConnection conis ; //公用连接
        }引用方法 AAA.text

    messagebox.show(AAA.text);
      

  11.   

    8楼正解,在我们项目组里面,谁要是定义了静态变量(不论值类型还是引用类型),都会被人暴扁至死。
    static用于定义公共静态方法,而不是定义全局变量……
    n多人在建议定义静态变量,虽然能实现楼主的要求,不过我还是感觉满头大汗。
      

  12.   

    题外话:曾经有人定义了一个函数,我光数那个函数的参数就数到17个,kao,被我好一阵骂
      

  13.   

    用一个全局的类吧.public   class   Globe 

            public   static   int   n ;//公共变量   
    }
      

  14.   

    请看10 11 12楼,迷糊,三个人都写ststic……
      

  15.   

    类与类之间无法进行参数的直接传递,所以不能使用static,但是可以自己写一个方法得到其返回值。
    具体操作如下:
    class A
    {
            private string yourname="yangsongx";
            public string returnyourname()
            {
                return yourname;
            }
    }class B
    {
       A f = new A();//new一个类
       String s = f.returnyourname();//得到类A里面的String类型参数yourname的值
    }这样就很轻松的实现了类与类之间参数的传递。
      

  16.   

    定义一个数据槽。/// <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);
                }
            }
           
        }
      

  17.   

    一般我也是用Static变量来做的!PS:网速慢,回复页面刷不出来……
      

  18.   

    大家好,这里是新疆的.net   QQ群体,欢迎大家加入(50794700) 
      

  19.   

     写个类.类里用public static 变量名
      

  20.   

    关键字static在c#语法一个功能就是定义全局变量,如: public static 类型 变量名 ;
    然后就可以在整个项目中使用了,我前几天还用多.呵呵
    另外加一句,这个关键字和c中使用不一样,注意区别.
      

  21.   

    真正称为全局要算application吧
      

  22.   

    顶下8楼全局变量的概念不符合OO思想...应该摈弃... 例如我们都知道自然界中光速是恒定不变的...按照PO的思维它就应该就是全局变量...但光速还是对象光的一个属性... 所以你应该考虑的是实现一个公共类而不是全局变量...
      

  23.   

    这么说,java 为了摒弃全局变量 出现了IOC 注入模式,所有注册,需要实例化的对象,都统一放置在当前环境的容器里,这个是个公有类,它只允许访问,至于向里添加实例化的动作,交给了框架完成。
    那么,lz,也可以考虑这种方式,当然不是叫你用IOC框架。你可以设计一组个类,根据实例化的对象不同存放不同的包含的对象。
    这样可以解决你说的全局变量的问题。同时,稍加修改,你也可以将这组类,转变成自己的Cache。说的不好,见谅!