字典初始化获取Key值

Dictionary initialization access to Key value

我有这种情况:

public Class Device
{
}
public Class Response
{
   Response(Device device){ ... }
}

public class DeviceManager
{

private Dictionary<Device, Response> behaviours = new Dictionary<Device, Behaviour>{
{
new Device, new Response(...here I want the to send current key value !!!... )}
}
}

我可以通过当前的 C# 语义方式访问键的当前值吗?我知道我很懒。

您不能在字段初始值设定项中执行此操作。你必须把它放在构造函数中:

public class DeviceManager
{
    private Dictionary<Device, Response> behaviours =
        new Dictionary<Device, Behaviour>();

    public DeviceManager()
    {
        Device device = new Device();
        behaviours.Add(device, new Response(device));
    }
}

使用 C# 6,您可以 使用 Dictionary<Device, Response>:

上的扩展方法
public static void Add(
    this Dictionary<Device, Response> dictionary,
    Device device)
{
    dictionary.Add(device, new Response(device));
}

然后:

... = new Dictionary<Device, Response> { new Device() };

...但我不认为我会那样做。

因为在这种情况下,通过查看初始化提供了解设备之间线束的方法对我来说非常重要,所以我最终得到了这个解决方案:

其实你可以通过引入各种Add方法来告诉Dictionary如何初始化:

public class Behaviours:Dictionary<Device, Response>
{
   new public void Add(Device d)
   {
       var r= new response(d);
       (this as Dictionary<Device, Response>).Add(d, r);
   }
}

...

private Behaviours _behaviours = new Behaviours{
  {new Device()},
  {new Device()},
  {new Device()},
}

在实际问题中,创建设备的参数较多,所以我通过这种方式创建了一组一看就懂的行为。