目前正在开发一个双向查找关联泛型,由TKey排序.在某些时候,我希望有如下访问权限:
public class Assoc<TKey, TValue>
{
public TKey this[TValue value] { get; }
public TValue this[TKey value] { get; }
}
Run Code Online (Sandbox Code Playgroud)
但显然当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; }
}
Run Code Online (Sandbox Code Playgroud)
不,没有基于泛型类型的条件编译。
泛型替换是在运行时而不是编译时执行的。
这是 .NET 泛型和 C++ 模板之间的区别之一。
泛型也没有C++ 模板所具有的专门化概念。
http://msdn.microsoft.com/en-us/library/c6cyy67b.aspx
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |