Trong một nơi tôi đang sử dụng danh sách các chuỗi trong trường hợp đó, tôi có thể thay đổi giá trị của chuỗi như mã đưa ra dưới đây,Thay đổi giá trị đối tượng trong vòng lặp foreach?
foreach(string item in itemlist.ToList())
{
item=someValue; //I am able to do this
}
Nhưng đối với đối tượng của lớp tôi không thể thay đổi thành viên giá trị của đối tượng mã là như dưới đây,
public class StudentDTO
{
string name;
int rollNo;
}
studentDTOList=GetDataFromDatabase();
foreach(StudentDTO student in studentDTOList.ToList())
{
studentDTO=ChangeName(studentDTO); //Not working
}
private StudentDTO ChangeName(StudentDTO studentDTO)
{
studentDTO.name=SomeName;
return studentDTO;
}
Lỗi là: không thể gán bởi vì nó lặp biến
Không, bạn thực sự không thể thực hiện mã trong đoạn mã đầu tiên. Biến lặp lại là chỉ đọc. –
tôi có thể làm vì .ToList() tạo bản sao của danh sách và lặp qua bản sao đó để nó hoạt động –
Không, bạn không thể làm điều đó. Hãy thử nó. Mã * sẽ không biên dịch *. Nếu bạn thực sự tin rằng nó sẽ, xin vui lòng sản xuất một chương trình ngắn nhưng đầy đủ chứng minh rằng - bạn sẽ thấy nó không thành công. –