从数组中更新对象的值(初学者)
本文关键字:初学者 对象 数组 更新 | 更新日期: 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
}
}