重讀C#進階編程之Struct在實際開發中的應用

來源:互聯網
上載者:User
   首先看看struct和class區別和相同點.
   1.最大的不同在於資料類型不同,前者為實值型別,而後者為參考型別。
   2.由於資料類型的不同,他們在記憶體中儲存的位置也不同,前者儲存在stack中,後者則Heap中;
   3.由於儲存位置不同,存取速度就有很大差距.stack中資料肯定heap中要快很多.
   4.class支援介面繼承,執行個體繼承,而struct只支援介面繼承.
    ...想不到了,先這樣吧.
   5.除此之外,他們大體相同:只是關鍵字不同而已.

   所以,通常我們把Struct叫做輕量級資料結構,可以用來傳輸資料,此時比class要方便快捷很多.當然這裡的資料應該是一些關聯性比較強的一些資料,不然的話,就會很奇怪。
   看一個Demo:

class Class1
    {
        static void Main(string[] args)
        {
            int n=10;

            myStruct[] structs=new myStruct[n];

            for (int i = 0; i < n; i++)
            {
                structs[i].name = "ivan" + i;
                structs[i].arrs = new string[] { "ss", "ddd" };
            }

            showData(structs);

        }

        private static void showData(myStruct[] mystructs)
        {
            for (int i = 0; i < mystructs.Length; i++)
            {
                Console.WriteLine(mystructs[i].name);
            }
        }
    }

   public struct myStruct
    {
        public string name;
        public string[] arrs;
    }

   另外,還有一種情況,用struct十分方便:迴圈提交資料給資料庫的情況。
    比如要把excel資料匯入db中,通常我們會先把excel資料讀出來,放在DataSet中,而後迴圈讀取其中資料,執行insert語句...,而更糟的是,我們的資料訪問是用web service實現的,那也就是說,程式會在短時間內頻繁的訪問server,調用web service,結果會怎麼樣哪?server會以為這個行為為攻擊行為,Deny...
    所以,對於批量的資料匯入,通常要首先把資料“打包”,而後一次提交。
    這個時候,struct就可以發揮作用了.

public struct MyInsert
    {
        public string TableName;
        public string[] Fields;
        public string[] FieldValues;
    }
MyInsert[] Inserts = new MyInsert [5];
        for (int i = 0; i < 5; i++)
        {
            MyInsert dbInsert = new MyInsert();
            dbInsert.TableName = "EXAMPLE";
            dbInsert.Fields = new string[] { "ID", "NAME", "ADDRESS", "TEL" };
            dbInsert.FieldValues = new string[] {
            Guid.NewGuid().ToString(),
                "JIA" + i.ToString(),
                "SZ" +i.ToString(),
                i.ToString()+"000"
            };
            Inserts[i] = dbInsert;
        }

  InsertAllData(Inserts);

而後在InsertAllData中對傳遞進來的Struct“解析”,執行操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.