0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コード設計学習10 可変がもたらす意図せぬ影響

Posted at

このブログについて

最近システム設計に興味を持ち、特にコード設計について学んだことをまとめます。
自分の今後の戒めも込めて。

可変がもたらす意図せぬ影響について

可変オブジェクトは、複数の変数が同じオブジェクトを参照している場合、意図しない影響(副作用)が起こりやすくなります。

悪いコード例

var items = new List<string> { "Apple", "Banana" };
var backup = items;

items.Add("Orange");

// 期待: Apple, Banana → 実際: Apple, Banana, Orange
Console.WriteLine(string.Join(", ", backup));

backupに代入したつもりでも、同じリストを参照しているため、itemsを変更するとbackupも変わってしまいました。
これは可変オブジェクトの典型的な罠です。

良いコード例

var items = new List<string> { "Apple", "Banana" };
var backup = new List<string>(items); // コピーを作成

items.Add("Orange");

Console.WriteLine(string.Join(", ", backup)); // Apple, Banana

こうすることで、どのタイミングでも状態が変わらないことが保証され、予期せぬ変更やバグを防ぐことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?