从数组中更新对象的值(初学者)

本文关键字:初学者 对象 数组 更新 | 更新日期: 2023-09-27 18:09:37

我有一个数组如下:

School[] _schools = new School[MxNr];

和对象School有一个属性' Room[].

我在foo.class的房间数组中插入了所有的房间,如下所示:

        Rooms[] rooms = new Rooms[NrOfRooms];
        int temp2 = 0;
        foreach (School school in _schools) {
            foreach (Rooms room in school.Rooms) {
                room[temp2++] = room;
            }
        }

现在我更新房间:

Room[0] = new Room(SomeVal);

但是当我迭代学校数组时,我可以看到房间没有更新,仍然保持旧的值。

编辑:

    public class School {
    public School(string schoolStr, bool IsFirstSchool = false, bool IsLastSchool = false) {
        int nrOfRooms = IsFirstSchool || IsLastSchool ? 1 : 2;
        Rooms = new Room[nrOfRooms];
        Rooms[0] = new Room(someVal);
        Rooms[1] = new Room(someVal);
    }
    public Room[] Rooms { get; set; }
}

我想现在为什么和如何我可以解决这个问题在c#

从数组中更新对象的值(初学者)

最好的方法是List<Room>并更新为以下方式

public class School 
{
    public School(string schoolStr, bool IsFirstSchool = false, bool IsLastSchool = false) 
    {
         int nrOfRooms = IsFirstSchool || IsLastSchool ? 1 : 2;
         //set number of rooms in room class
         Rooms = new List<Room>();
         Rooms.Add(new Room(someVal));
         Rooms.Add(new Room(someVal));
    }
    public List<Room> Rooms {get; set; }
}

现在,得到所有学校的房间

var rooms = new List<Room>();
foreach (School school in _schools) 
{
     foreach (Rooms room in school.Rooms) 
     {
          rooms.Add(room);
     }
}

要更新特定学校的房间,需要同时设置学校和房间的ID

var school = _schools.Where(x => x.ShoolId == 2).FirstOrDefault(); //Getting school having Id = 2
if (school != null)
{
    var room = school.Rooms.Where(x => x.RoomId == 1).FirstOrDefault(); //getting room of school with Id = 2 and having roomId = 1 (say)
    if (room != null)
    {
        room = new Room(someValue); //Update Value
    }
}