我曾经试过用一个静态数组变量来试图定义一个全局的变量,但是这样做会破坏了类的封装性,所以我定义一个为属性,它类型为数组,但是却怎样也不能得到我所要的结果.
代码如下:
  在同个命令空间中我定义了二个类,分别为Array1.cs   public class Array1
    {
        private  static int[] StaticVariables;
        public int[] Proarray
        {
            get
            {
                return StaticVariables;
            }
            set
            {                /*
                 * 或者用这用方法
                 * int[] StaticVariables = new int[value.Length];
                   value.CopyTo (StaticVariables ,0);
                */
                int[] StaticVariables = (int[])value.Clone();            }
        }
    } 与另外一个类Form2.cspublic class Form2 : Form
    {
  
        private void button4_Click(object sender, EventArgs e)
        {
            int[] Orgions = new int[4] { 9, 8, 7, 6 };
            Array1 arr = new Array1();
            arr.Proarray = Orgions;
            MessageBox.Show(arr.Proarray.Length.ToString );
            
        }    }
当我触发 button4_Click事件后,
当我运行到  MessageBox.Show(arr.Proarray.Length.ToString ); 这句时,提示
arr.Proarray 为空?为什么?

解决方案 »

  1.   

    public static int[] Orgions = new int[4] { 9, 8, 7, 6 };
      

  2.   

    public static class1
    {
    public static int[] Orgions = new int[4] { 9, 8, 7, 6 };
    }
      

  3.   

    try...set
                {                StaticVariables = (int[])value.Clone();            }
      

  4.   


    private static int[] StaticVariables;
    修改
    private static int[] StaticVariables = new [n];
      

  5.   

    sorry,修正一下,
    n为数组大小。public class Array1
    {
    private static int[] StaticVariables = new int[n];
    public int[] Proarray
    {
    get
    {
    return StaticVariables;
    }
    set
    {/*
    * 或者用这用方法
    * int[] StaticVariables = new int[value.Length];
    value.CopyTo (StaticVariables ,0);
    */
    int[] StaticVariables = (int[])value.Clone();}
    }
    }