字典初始化获取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()},
}
在实际问题中,创建设备的参数较多,所以我通过这种方式创建了一组一看就懂的行为。
我有这种情况:
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()},
}
在实际问题中,创建设备的参数较多,所以我通过这种方式创建了一组一看就懂的行为。