Это будет смущающий вопрос для меня, но они говорят, что нет еще худшего вопроса, о котором никто не спрашивал. Итак, я поддерживаю код другого пользователя на C#. Почти нет проблем, но есть что-то, что меня беспокоит. Есть несколько Структуры двух типов:с использованием новых с structs в C#
private struct Struct1
{
public string name;
public int numX;
public int[] numA;
public int[,] x; //x coordinate
public int[,] y; //y coordinate
}
private struct struct2
{
public string name;
public double[] coA;
public double[] coB;
public double[] coC;
public double[] coD;
}
Struct1[] arrayOfS1;
Struct1 exOfS1;
Struct2[] arrayofS2;
Struct exOfS2;
Они кажутся совершенно аналогичное право. После этого в функции загрузки формы мы создаем их
int k;
for(k=0;k<MAX_ENTRY;k++)
{
arrayOfS1[k].numA = new int[MAX_BOUNDARY];
arrayOfS1[k].x = new int[MAX_BOUNDARY, MAX_POINT];
arrayOfS1[k].y = new int[MAX_BOUNDARY, MAX_POINT];
}
exOfS1.numA = new int[MAX_BOUNDARY];
exOfS1.x = new int[MAX_BOUNDARY, MAX_POINT];
exOfS1.y = new int[MAX_BOUNDARY, MAX_POINT];
и что-то подобное для другой структуры. Но моя проблема: до того, что мы делаем это:
arrayOfS1=new Struct1[MAX_ENTRY];
exOfS1= new Struct1(); //<------WHY THIS!!?
arrayOfS2= new Struct2[MAX_ENTRY];
//exOfS2=new Struct2(); //<----Why NOT this???
Как вы можете видеть массив структур инстанцируются с новым, как они должны быть. В и случаях. Но для переменных, которые содержат только одну из структур, только первый (exOfS1) создается с помощью нового, а не второго. В любом случае, мой вопрос будет Do exOfS1 и exOfS2 необходимо создать с новым ??
В коде у меня есть только один, созданный с новым, и мне интересно, почему? Это не нужно?
Я не уверен, я вижу разницу между этими двумя линиями «Почему это» и " Почему не это, кроме типа структуры? – Rob
Я предполагаю, что эта строка 'arrayOfS1 = new Struct2 [MAX_ENTRY];' должна быть: 'arrayOfS2 = new Struct2 [MAX_ENTRY];'? – JanR
да извините, я его отредактировал – KansaiRobot