Nếu tôi có một lớp cơ sở và hai lớp dẫn xuất, và tôi muốn thực hiện việc đúc giữa hai lớp dẫn xuất bằng tay, có cách nào để làm điều đó không? (trong C#)Overriding (cast)
abstract class AbsBase
{
private int A;
private int B;
private int C;
private int D;
}
class Imp_A : AbsBase
{
private List<int> E;
}
class Imp_B : AbsBase
{
private int lastE;
}
Nói chung tôi sẽ được truyền từ Imp_A -> Imp_B và tôi muốn giá trị cuối cùng trong danh sách E là 'LastE'. Ngoài ra, điều gì sẽ xảy ra nếu có ba hoặc nhiều lớp triển khai (như Mức lương, Hàng giờ, Tư vấn và Nhân viên cũ.)
Bất kể đây là âm thanh kiến trúc (tôi không thể mô tả toàn bộ ứng dụng và súc tích) là nó có thể?
Tôi sẽ viết một trình biến đổi, ngoại trừ việc hiểu được một trình biến đổi sẽ tạo ra một đối tượng mới của lớp Imp_B mà tôi không cần vì 'nhân viên' sẽ chỉ là một trong các tùy chọn thời gian.
-Devin
Hãy nhớ rằng điều này sẽ (rõ ràng) thực sự tạo ra một đối tượng Imp_B hoàn toàn mới. – mquander
Điều đó thật hoàn hảo. Nhưng, như mquander đề cập, đó là một đối tượng mới, mà tôi tin là không thể tránh khỏi. Nhưng điều này có nghĩa rằng "a" sẽ không được GC'd cho đến khi nó rơi ra khỏi phạm vi, mặc dù tôi không bao giờ sử dụng nó một lần nữa (như là một Imp_A)? – DevinB
Có, nó sẽ chỉ được thu thập nếu nó rơi ra khỏi phạm vi và bạn không còn giữ bất kỳ tham chiếu đến nó. –