Chỉ cần tự hỏi nếu có anyway để đại diện cho đoạn mã sau trong C# 3.5:Có thể trong C# để quá tải một toán tử cast chung theo cách sau không?
public struct Foo<T> {
public Foo(T item) {
this.Item = item;
}
public T Item { get; set; }
public static explicit operator Foo<U> (Foo<T> a)
where U : T {
return new Foo<U>((U)a.Item)
}
}
Cảm ơn
Và ngay cả khi chúng tôi đã hỗ trợ chuyển đổi chung do người dùng xác định, thì chuyển đổi này vẫn là bất hợp pháp. Việc xác định chuyển đổi thay thế một chuyển đổi được tích hợp là bất hợp pháp. Điều này sẽ làm như vậy nếu T và U là cùng loại; bạn sẽ thay thế chuyển đổi nhận dạng. –
Khi phôi được quyết định bởi trình biên dịch, nếu T và U là cùng loại, thì nó sẽ không sử dụng người dùng định nghĩa diễn viên, và được leagal. –