比如我的工程有两个窗体
我想定义一个变量在两个窗体里都可以访问
而且可以改变它的值
请问该如何定义
定义在什么地方
是Form1还是Form2
我用他们说的Public关键字来定义可是不行啊
而且还有很多人说C#根本就没有全局变量是真的吗?

解决方案 »

  1.   

    C#是没有类似VB的全局变量,不过可以通过static(静态)变量来实现,调用时不用实例化,直接用类名.变量名
      

  2.   

    c#中确实没有全局变量,但是可以变相的实现全局变量的功能,自己定义一个共用类,把需要全局访问的数据在其中定义为 public static 定义,后直接用类名.变量名访问,但是.net的系统结构不提倡这样做
      

  3.   

    很容易啊。
    比如:
    public class Form1 : System.Windows.Forms.Form
    {   
        public string st = "" //Form1里定义了一个st的字符串;
        public Form1()
        {} //以下都是fuction
    }
    在另外各Form里调用方法:
    Form1 fm = new Form1();
    fm.st = "";//你就可以对Form1里的st变量赋值了。不信你试试。哈哈
      

  4.   

    为什么不把两个窗体和那个变量定义在一个类里面呢?class  top
    {
      type  obj1;
      form   form1;
      form   from2;
      
      .........
    }
      

  5.   

    public abstract class g
    {
        public static int i;    private static int j;
        public static int J
        {
            get
            {
                return g.j;
            }
            set
            {
                g.j = value;
            }
        }
    }
      

  6.   

    很容易啊。
    比如:
    public class Form1 : System.Windows.Forms.Form
    {   
        public string st = "" //Form1里定义了一个st的字符串;
        public Form1()
        {} //以下都是fuction
    }
    在另外各Form里调用方法:
    Form1 fm = new Form1();
    fm.st = "";//你就可以对Form1里的st变量赋值了。不信你试试。哈哈
      

  7.   

    dll与exe中变量的互相访问呢?
      

  8.   

    本来就有窗口了,大哥,没看明白别乱说,ft nlb
      

  9.   

    推荐PUBLIC STATIC方法!如果你想要全局唯一(有且只有一个)可以使用SINGLTON设计模式代码如下:(注意这只能保证在单线程下保持唯一!多线程需要另做处理)class single
    {
        private static single m_single;
        private single(){}
        public static Single
        {
              get
             {
                    if(m_single!=null)
                    m_single=new single();
                    return m_single;
              }
        }
    }
      

  10.   

    看看我的博客,里面有关于这方面的介绍。
    http://blog.csdn.net/tjvictor/archive/2006/06/04/772711.aspx