class A
{
    //一些属性
    public A()
    {
        //提供给非B类使用的
    }
    public A(int x,int y,int z,int _)//参数比较复杂(不只这几个)
    {
        //提供给B类用的
    }
}
class B
{
    //我想在B中定义化A类的十个实例(而且是静态的)    ///一些属性
    
    //private static A[] myA=new  A[10]();  //这样会惊动A的第一个构造函数,
    //myA[0]=new A(x,y,z,_);                //这样又会覆盖原来的实例,肯定会制造垃圾   
    //myA[1]=new A(x,y,z,_);
    //      .
    //      .
    //      .
    //myA[10]=new A(x,y,z,_);    //private static A[] myA=new  A[10]{(参数很复杂直接这样实例化估计要写几英里),(),()};    //private static A[] myA;
    //myA[0]=new A(x,y,z,_); //这样好象会报错
    //myA[1]=new A(x,y,z,_); 
    //myA[10]=new A(x,y,z,_); 
    
}
class C
{
    //直接调用B.myA[0-----10];
}我想在B中定义化A类的十个实例(而且是静态的),谁的基础好能给我提供个更好的解决方法吗?

解决方案 »

  1.   

    class B
    {
        //我想在B中定义化A类的十个实例(而且是静态的)    ///一些属性
        
           //想在class C直接调用B.myA[0-----10]
           //这里要声明为Public
            public static A[] myA = new A[] {
            new A(1,2,3,4),new A(1,2,3,4),
            new A(1,2,3,4),new A(1,2,3,4),
            new A(1,2,3,4),new A(1,2,3,4),
            new A(1,2,3,4),new A(1,2,3,4),
            new A(1,2,3,4),new A(1,2,3,4)
            };
        
    }
      

  2.   

    静态static 变量只能在定义的时候赋值,
    如果在其他时候赋值,不能保存你使用的时候是已赋值的
    或者加个属性    class B
        {        private static A[] myA = null;        //属性
            public static A[] MyA
            {
                get
                {
                    if ( myA == null )
                    {
                        //如果未初始化,进行初始化
                        myA = new A[10];
                        myA[0] = new A( 1, 2, 3, 4 );
                        myA[1] = new A( 1, 2, 3, 4 );
                        myA[2] = new A( 1, 2, 3, 4 );
                        //....
                    }                return myA;
                }        }    }