具有值类型键和引用类型值的通用字典

时间:2012-10-08 00:20:03

标签: c# .net c#-4.0 .net-framework-version

您编写了哪些代码来约束名为MyDictionary的通用字典,以使值类型键具有引用类型值?

我认为这是我的答案:

public class MyDictionary<Tkey,TValue>:Dictionary<Tkey,TValue>
where Tkey:struct
where TValue:class
{

}

但我不确定这是否是正确答案..

2 个答案:

答案 0 :(得分:4)

对我来说很好看。一个小警告,您将无法使用Nullable类型(例如int?)作为此类词典中的键或值。

来自Constraints on Type Parameters

  

where T: struct type参数必须是值类型。任何价值   可以指定除Nullable以外的类型。

     

where T: class type参数必须是引用类型;这个   也适用于任何类,接口,委托或数组类型。

答案 1 :(得分:0)

没问题。如果完全没问题。

var c = new Dictionary<MyStruct?, MyClass>();
MyStruct? key = new MyStruct(){ X =5};
var value = new MyClass();
c.Add(key, value);
Console.WriteLine(c[key].Prop);