iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0
自我挑戰組

C# 和 SQL 探索之路系列 第 7

Day 7: C# 結構 (struct) 的使用

  • 分享至 

  • xImage
  •  

嗨,今天要介紹的是結構 (struct) ~ 結構在部分的程式語言裡,其實是很常使用的,只是在撰寫物件導向的 C# 時,可能會漸漸地減少使用結構,今天就再來複習一下。

結構的幾個重要特性

  • 可以使用方法、屬性等大部分的成員 (詳情請閱讀參考資料中提到的限制)。
  • struct 是數值型別,class 是參考型別。struct 適合用來定義輕量型物件,因為數值型別在配置記憶體上,成本較參考型別來得小;然而,當需要複製資料,或是對資料進行封裝或傳遞時,參考型別的成本較低。
  • 可使用具有參數的建構函數,但不能自己寫預設 (無參數) 的建構函數

使用方式

建立方式如下:

public struct Coords
{
    public int x, y;

    public Coords(int p1, int p2)
    {
        x = p1;
        y = p2;
    }
        
    public void add(Coords c)
    {
        x = x + c.x;
        y = y + c.y;
    }
}

使用方式如下:

Coords c1 = new Coords();
c1.x = 5;
c1.y = -3;
Coords c2 = new Coords(10, 10);
        
c2.add(c1);

Console.WriteLine($"Coords 1: {c1.x}, {c1.y}");
Console.WriteLine($"Coords 2: {c2.x}, {c2.y}");

結構與類別怎麼選擇 ?

官方的建議:

  1. 當內容比較簡單,且生命週期較短,或是嵌入在其它類別內時可以使用結構。
  2. 在邏輯上趨近於基本型別,不常被封裝,為不可變,且大小不大於 16 bytes 可以使用結構。

其它狀況建議使用類別。
(難怪使用上還是常見類別。)

參考資料


上一篇
Day 6: C# 關鍵字: $
下一篇
Day 8: C# 如何複製 List
系列文
C# 和 SQL 探索之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言