Ví dụ: tôi có một lớp cơ sở Entity
, sau đó hai lớp phụ bắt nguồn từ điều này, LightEntity
và PlayerEntity
.Lặp qua danh sách các đối tượng có cùng lớp cơ sở và trích xuất một lớp nhất định? Ví dụ:
Sau đó, tôi có List<Entity> Entities
giữ LightEntity
s và PlayerEntity
s.
Tôi muốn nhận tất cả LightEntity
s từ Entities
.
tôi đã cố gắng:
List<LightEntity> lights = new List<LightEntity>();
foreach (Entity ent in Entities)
{
if(ent is LightEntity)
{
lights.Add(ent);
}
}
Nhưng nó không thích điều này như trình biên dịch vẫn dường như nghĩ rằng nó có thể cố gắng thêm chỉ là một Entity
vào một danh sách các LightEntity
.
Tôi đã cố gắng truyền ent
đến LightEntity
nhưng trình biên dịch cho biết không có phương pháp chuyển đổi số Entity
thành số LightEntity
.
tôi muốn cho bạn biết nguyên nhân. Trong C#, downcasting không được cho phép ngầm. Điều này có nghĩa là bạn phải tiếp tục với việc truyền đạt rõ ràng, cho CLR biết rằng an toàn trong trường hợp của tôi là làm như vậy. – Nair