目前正在开发一个双向查找关联泛型,按TKey排序。在某些时候,我希望能够访问以下内容:
public class Assoc<TKey, TValue>
{
public TKey this[TValue value] { get; }
public TValue this[TKey value] { get; }
}
但显然当TKey == TValue时,这将失败。出于好奇,是否有条件编译语法来执行此操作:
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; }
}
答案 0 :(得分:4)
不,没有基于通用类型的条件编译。
泛型替换是在运行时执行的,而不是编译时。
这是.NET泛型和C ++模板之间的差异之一。
泛型也没有C ++模板所具有的专业化的概念。