Hiện đang làm việc trên một liên kết tra cứu 2 chiều chung chung, được sắp xếp theo TKey. Tại một thời điểm nào đó, tôi hy vọng có quyền truy cập như sau:Biên dịch có điều kiện của các phương pháp chung
public class Assoc<TKey, TValue>
{
public TKey this[TValue value] { get; }
public TValue this[TKey value] { get; }
}
Nhưng rõ ràng là khi TKey == TValue điều này sẽ thất bại. Ngoài sự tò mò, có cú pháp biên dịch có điều kiện để thực hiện điều này:
public class Assoc<TKey, TValue>
{
[Condition(!(TKey is TValue))]
public TKey this[TValue value] { get; }
[Condition(!(TKey is TValue))]
public TValue this[TKey value] { get; }
public TKey Key(TValue value) { get; }
public TValue Value(TKey value) { get; }
}
Khi nào sử dụng lớp học với TKey == TValue hữu ích? – casablanca
'TKey công khai '[giá trị giá trị truyền hình] {get; } 'làm gì? Tôi không hiểu mục đích của API này. –
@casablanca, Bạn đã bao giờ sử dụng 'Từ điển'? Có vẻ như Jake muốn có một cái gì đó rất giống với một từ điển, nhưng với tìm kiếm kết hợp của cả khóa và giá trị. –