C #: как перевести вложенные структуры из C в C #? - PullRequest
0 голосов
/ 29 января 2019

У меня есть программа, написанная на C, которая содержит несколько вложенных структур массивов, таких как:

typedef struct
{
    int s1var1[s1max1],
    float s1var2[s1max2];
}struct1;


typedef struct
{
    int s2var1[s2max1];
    struct1 s2var2[s2max2];
        *s2var2_ptr;
}struct2;

, и я написал ее на C # следующим образом:

class Class1
{
    public int[] s1var1 = new int[s1max1];
    public float[] s1var2 = new float[s1max2];
}


class Class2
{
    public int[] s2var1 = new int[s2max1];
    public Class1[] s2var2 = new Class1[s2max2];
}

Мой перевод правдив?Что не так с этим переводом?

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Во-первых, давайте взглянем на ваш код концептуально.В C у вас есть некоторые структуры, а в C # у вас есть несколько классов.Вам нужно знать, что структура отличается от класса во многих отношениях, не говоря уже о том, что у нас есть здесь и несколько других языков, поэтому написание C # struct было бы более подходящим.Однако, если мы посмотрим на вашу реализацию, мы увидим, что на уровне объявления вы пытаетесь присвоить некоторые значения вашим массивам соответственно.Вы уверены, что используемые вами ограничения определены и видны в том месте, где вы пытаетесь их использовать?Кроме того, было бы намного лучше, если бы вы использовали конструктор и инициализировали там свои массивы.И, наконец, я не уверен, что в точке Class2 вы видите Class1, который вы пытаетесь использовать.

0 голосов
/ 29 января 2019
public  struct struct1
{
    public int[] s1var1;
    public float[] s1var2;
}


public  struct struct2
{
    public int[] s2var1;
    public struct1[] s2var2;
}


public static void Main()
{   

        struct1 str;
        str.s1var1 = new int[10];
        str.s1var2= new float[10];

        //or
        struct1 str1 = new struct1();
        str1.s1var1 =  new int[10];
        str1.s1var2= new float[10];
        ////
     struct2 str2;
     str2.s2var1 = new int[10];
     str2.s2var2 = new struct1[10];

    }

Тип структуры - это тип значения, который обычно используется для инкапсуляции небольших групп связанных переменных, таких как координаты прямоугольника или характеристики предмета в инвентаре.

При создании структуры переменная, которой назначена структура, содержит фактические данные структуры.Когда структура присваивается новой переменной, она копируется.Поэтому новая переменная и исходная переменная содержат две отдельные копии одних и тех же данных.Изменения, внесенные в одну копию, не влияют на другую копию.

Источник Microsoft Узнать больше о структурах Классы и структуры

...