【问题标题】:Generic dictionary with value type keys and reference type values具有值类型键和引用类型值的通用字典
【发布时间】:2012-10-08 00:20:02
【问题描述】:

您编写什么代码来约束名为MyDictionary 的通用字典,使其具有具有引用类型值的值类型键?

我想这是我的答案:

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

}

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

【问题讨论】:

  • 出于好奇,对于这样的字典,泛型类型是值类型还是引用类型有什么关系?
  • 一个好问题,即使我想知道这样的条件在哪里会有帮助。这是在一次技术面试中向我提出的......

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


【解决方案1】:

我觉得不错。一个小警告,您将无法使用 Nullable 类型(例如 int?)作为此类字典中的键或值。

来自Constraints on Type Parameters

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

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

【讨论】:

    【解决方案2】:

    没问题。如果会很好。

    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);
    

    【讨论】:

      猜你喜欢
      • 2012-03-15
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多