您编写了哪些代码来约束名为MyDictionary
的通用字典,以使值类型键具有引用类型值?
我认为这是我的答案:
public class MyDictionary<Tkey,TValue>:Dictionary<Tkey,TValue>
where Tkey:struct
where TValue:class
{
}
但我不确定这是否是正确答案..
答案 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);