首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 7:選擇不可變的原子實值型別(二)

     編輯:關於C語言

可變結構的多執行緒與例外風險

a1.City = "Ann Arbor";  // City/State/Zip 不一致 → 暫態無效
// 若此時拋出例外(如 Zip 驗證失敗)
// 物件停留在不一致狀態,其他執行緒可能讀到

修正需:防禦性複製 + 執行緒同步 + 複雜驗證邏輯 → 成本極高且易出錯。

解決之道:readonly 欄位 + 移除 set

public readonly struct Address
{
    public readonly string Line1;
    public readonly string Line2;
    public readonly string City;
    public readonly string State;
    public readonly int ZipCode;

    // 僅 getter
    public string Line1 => _line1;
    public string Line2 => _line2;
    public string City => _city;
    public string State => _state;
    public int ZipCode => _zipCode;
}

下一步:加入建構函式與驗證

見第 3 部分:完整建構函式實作、驗證邏輯、使用模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved