簡體   English   中英

將不同的值插入列表c#

[英]Insert distinct value to list c#

假設我有這兩個類:

public class BlockBuilding
{
    private List<Room> rooms;
...

public class Room
{
    private List<Chair> chairs;
....

然后我聲明一個2D數組變量並賦值:

BlockBuilding[,] bB= new BlockBuilding[2,1];

Room room = new Room();
BlockBuilding b1 = new BlockBuilding();
BlockBuilding b2 = new BlockBuilding();

b1.getRooms().Add(room);
b2.getRooms().Add(room);

bB[0,0] = b1;
bB[1,0] = b2;

Chair c1 = new Chair();
Chair c2 = new Chair();

bB[0,0].getRooms()[0].getChairs().Add(c1);
bB[1,0].getRooms()[0].getChairs().Add(c2);

假設所有必要的數據都存在並且沒有NullException問題,當我嘗試在bB [0,0]和bB [1,0]中顯示主席時,令人驚訝的是它們都包含c1和c2,而每個都只包含一把椅子。

以上所有都是與我的代碼類似的代碼結構,由於披露協議的限制,不允許披露我的代碼。 幾個星期以來,我一直被這個蟲子困擾。 任何幫助將不勝感激!

你應該使用兩個不同的房間,因為它是一個參考,你為兩個BlockBuildings添加相同的房間...

Room room1 = new Room();
Room room2 = new Room();
BlockBuilding b1 = new BlockBuilding();
BlockBuilding b2 = new BlockBuilding();

b1.getRooms().Add(room1);
b2.getRooms().Add(room2);

class通過引用傳遞,因此您將相同的對象添加到兩個房間。

如果您想要“按值復制”功能,您需要使用struct (首先要確保閱讀一些“C#值與引用類型”文章,如引用和值 )。

或者,您可以在添加到列表之前對對象進行深層復制( 深度克隆對象 )。

多謝你們! 事實上,我是C#的新手,我的項目非常依賴它。 有太多有用的答案,我實際上不能評價任何人作為“最”有用的答案,因為你們所有人都是最好的! 是的問題是單個房間實例,為每個BlockBuilding創建不同的房間實例將立即解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM