Engineer khalid Ответов: 2

Не удалось достичь общедоступного статического класса в form2


Привет
у меня есть 2 формы ,form1 имеет classe внутри класса ,я генерирую публичный статический массив этих классов в form1.
статический публичный отец[] xx = новый отец[3];//<----смотрите строку а в приведенном ниже коде
В форме 2 я написал:
инт сохранитьв;
сохранитьв = форма form1.ХХ[0].Р[0].В[0].Х;
прогрм не запустился ошибка есть
Несогласованные доступность: полевые испытания тип'.Форма form1.отец[]' менее доступен, чем полевые испытания'.Форма form1.ХХ'

как я могу переопределить вышеупомянутые классы, чтобы запустить программу ?
большое спасибо

Что я уже пробовал:

//Classes are in form1
    class MyNum
    {
        private int x;
        public MyNum() { }
        public MyNum(int Xx) { X = Xx; }
        public int X { get { return x; } set { x = value; } }
    }//MyNum
    class Sun
    {
        public int n;
        public MyNum[] V;
        public Sun() { }
        public Sun(int Xn) { N = Xn; }
        public int N { get { return n; } set { n = value; } }
        public MyNum this[int i]
        { get { return V[i]; } set { V[i] = value; } }
    }//MyLine
    class father
    {
        public int x;
        public Sun[] P;
        public father() { }
        public father(int Xx) { X = Xx; }
        public int X { get { return x; } set { x = value; } }
        public Sun this[int i] { get { return P[i]; } set { P[i] = value; } }
    }//father
    static public father[] xx = new father[3];//<--------------Line A
    // the line below is in Form_2_Load
         int SaveInt;
     saveInt = Form1.xx[0].P[0].V[0].X;

2 Ответов

Рейтинг:
2

OriginalGriff

C# чувствителен к регистру; эти две строки не относятся к одной и той же переменной:

int SaveInt;
saveInt = Form1.xx[0].P[0].V[0].X;

Исправьте это, и он будет компилироваться.
Это не сработает - вы получите нулевые ссылочные ошибки, потому что вы их еще не создали father экземпляры в массиве xx - но он будет компилироваться.
Вам тоже нужно что-то подобное:
for (int i = 0; i < 3; i++)
   {
   xx[i] = new father();
   }


Engineer khalid

использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
использование System.Data;
использование системы.Рисование;
использование System.Linq;
использование System.Text;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна.Формы;
использование системы.ИО;

тест пространства имен
{
частичный класс Form1 : форма
{
публичный статический файлового потока ФСГ; модулю записи StreamWriter СГ;
тупит класса
{
private int x;
общественные тупит() { }
public MyNum(int Xx) { X = Xx; }
общественная int х { get { возвращение х; } набор { х = значение; } }
}//MyNum
класс Солнце
{
public int n;
общественные тупит[] в;
общественное Солнце() { }
public Sun(int Xn) { N = Xn; }
общественная int Н { get { возвращение Н; } набор { Н = значение; } }
public MyNum this[int i]
{ get { возвращение в[Я]; } набор { в[Я] = значение; } }
}//Функцию myline
класс отец
{
public int x;//число, подлежащее анализу, например 256,128,64
публичное Солнце[] P;
публичный отец() { }
публичный отец(int Xx) { X = Xx; }
общественная int х { get { возвращение х; } набор { х = значение; } }
общественные Солнце[int я] { get { возвращение П[Я]; } набор { Р[Я] = значение; } }
}//отец

статический публичный отец[] xx = новый отец[3];

public Form1() { InitializeComponent();}
//------------------------------------------------
частная FormLoad недействительным(объект отправителя, EventArgs в электронной)
{int i,j,k;

fsG = Новый Поток файлов("Tracey.txt", FileMode.Усечение, FileAccess.Писать);
sg = new StreamWriter(fsG);//, System.Text.Encoding.По умолчанию);//для арабского файла);

для (i = 0; i < 3; i++)// проанализировать 3 числа типа 256, 128 64
{
xx[i] = новый отец();//3 отец
xx[i].X = 0;
xx[i].P = новое солнце[4];//у каждого отца есть четыре солнца
для (j = 0; j < 4; j++)
{
ХХ[я].П[Дж] = новое Солнце(); //кол-во,див самом деле,власти у каждого N, которые показывают, сколько НУМ или div или то власть
xx[i].P[j].N = 50; //каждое Солнце имеет 50 детей
ХХ[я].П[Дж].В = новый тупит[50];//хх[я].П[Дж].Н];//50 детей
для (k = 0; k < xx[i].P[j].N; k++)
{
xx[i].P[j].V[k] = новый MyNum();
xx[i].P[j].V[k].X = k;//у каждого ребенка есть число`
}
}//Дж
}//для i
}

частный недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
int i, j,k;
для (i = 0; i < 3; i++)// проанализировать 3 числа
{
СГ.Писать("ХХ["+я.Метод toString()+"]="+"\р\н");
для (j = 0; j < 4; j++)
{
СГ.Писать("ХХ[" + я.Метод toString() + "].П[" + Дж.Метод toString() + "].Н=" + ХХ[я].П[Дж].Н.Метод toString()+"\р\н");
для (k = 0; k < 50; k++)
{
ХХ[я].П[Дж].В[к].Х = к;
СГ.Писать("ХХ[" + я.Метод toString() + "].П[" + Дж.Метод toString() + "].В[" + к.Метод toString() + "].Х=" + ХХ[я].П[Дж].В[к].Х + "\р\н");
}//для k
}//Дж

}//для i
sg.Close(); fsG.Close();
Ящик для сообщений.Шоу("конец");
}

Engineer khalid

все еще не скомпилирован

Рейтинг:
10

Engineer khalid

я должен объявить класс как публичный, например

public class father