簡體   English   中英

C#:如何將嵌套結構從C轉換為C#?

[英]C#: How to translate nested structures from C to C#?

我有一個用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];
}

我的翻譯是真的嗎? 這個翻譯有什么問題?

謝謝你的時間。

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];

    }

struct類型是一種值類型,通常用於封裝一小組相關變量,例如矩形的坐標或清單中項目的特征。

創建結構時,為其分配變量的變量將保存該結構的實際數據。 將結構分配給新變量后,將對其進行復制。 因此,新變量和原始變量包含相同數據的兩個單獨副本。 對一個副本所做的更改不會影響另一副本。

微軟來源
了解有關結構的更多信息
類和結構

首先,讓我們從概念上看一下您的代碼。 在C中,您有一些結構,在C#中,您有一些類。 您將需要知道struct在許多方面都不同於類 ,更不用說我們在這里也有一些不同的語言,因此編寫C# struct更合適。 但是,如果我們看一下您的實現,就會發現在聲明級別,您嘗試分別為數組分配一些值。 您確定要使用的限制已定義並在嘗試使用時可見嗎? 同樣,如果使用構造函數並在那里初始化數組會更好。 最后,我不確定在Class2上是否看到要使用的Class1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM