a1.City = "Ann Arbor"; // City/State/Zip 不一致 → 暫態無效
// 若此時拋出例外(如 Zip 驗證失敗)
// 物件停留在不一致狀態,其他執行緒可能讀到
修正需:防禦性複製 + 執行緒同步 + 複雜驗證邏輯 → 成本極高且易出錯。
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 部分:完整建構函式實作、驗證邏輯、使用模式。