将一个对象添加到多个数组,并保持每个副本之间的差异?

Mer*_*120 0 c# arrays object instance

基本上,我想创建一个对象,然后将该对象添加到一堆不同的数组中,并确保如果一个数组更改了对象的值,则其他数组中的其他对象不会更改其值。

例如,假设我宣布一把枪,其中50枚子弹以整数形式存储:

Gun tommygun = new Gun(50);
Run Code Online (Sandbox Code Playgroud)

我有两名士兵,每个士兵都有枪支清单,并在每个士兵中都添加了一个“地雷枪”。

Soldier1.Guns.Add(tommygun);
Soldier2.Guns.Add(tommygun);
Run Code Online (Sandbox Code Playgroud)

士兵1开枪:

Soldier1.Shoot(Soldier1.Guns[0]);
Run Code Online (Sandbox Code Playgroud)

这会使Soldier1的弹药减少1。现在是49。这是否还会减少Soldier2的弹药?如果是这样,我如何避免在不为每位士兵创建单独的弹药的情况下避免这种情况?

Ral*_*oss 5

为每个士兵创建一个单独的汤米枪对象实例。

当物体通过参考传递时,此刻您正在两个士兵之间共享一杆枪。